Я отправляю push-уведомление от Amazon SNS в приложение ios в swift ver. 3. При поступлении push-уведомления приложение переключается на второй элемент панели вкладок на моем устройстве в соответствии с this SO-нить. MyGlobalVariables - это структура, обновленная в AppDelegate.swift и прочитанная в диспетчере представлений.Обновить текстовую метку в панели управления viewbar
AppDelegate.swift
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
if let aps = userInfo["aps"] as? NSDictionary {
if let alert = aps["alert"] as? NSDictionary {
if let title = alert["title"] as? String {
MyGlobalVariables.pushTitle = title
}
if let body = alert["body"] as? String {
MyGlobalVariables.pushBody = body
}
}
}
if self.window!.rootViewController as? UITabBarController != nil {
let tabbarController = self.window!.rootViewController as! UITabBarController
tabbarController.selectedIndex = 1
}
}
В SecondViewController.swift текст обновления в viewWillAppear() и все в порядке.
override func viewWillAppear(_ animated: Bool) {
pushTitleLabel?.text = MyGlobalVariables.pushTitle
}
Если новый толчок уведомление с другим названием отправляется в то время как я нахожусь в этой вкладке я хотел бы текст метки будет обновляться без перехода в сторону и назад.
Я попытался обновить текстовую метку, добавив ее в AppDelegate.swift.
let sVC = SecondViewController()
if let title = alert["title"] as? String {
MyGlobalVariables.pushTitle = title
sVC.updateLabel(t: title)
}
И имеют эту функцию в SecondViewController.swift
func updateLabel(t: String) {
self.pushTitleLabel?.text = t
}
Но я все равно должны перейти от вкладки и обратно, что текст обновлен, который viewWillAppear() берет на себя.
Спасибо, работает! :-) Добавлен Xcode? для просмотраКонтроллеры, т.е. viewControllers? [1]. – kometen