我的应用有5个标签栏,每次我收到推送通知,我希望应用程序导航到索引中的第3个标签。当应用程序处于前台或后台(处于活动状态)时,我能够实现它。如果应用程序已关闭,我尝试打开推送通知,应用程序将打开并崩溃。 以下是我的代码
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
{
let tabbar:UITabBarController = self.window?.rootViewController as! UITabBarController
tabbar.selectedIndex = 3
}
请让我知道我做错了什么。
答案 0 :(得分:1)
尝试在diFinishLaunchingWithOptions
方法的末尾添加以下代码:
if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String : AnyObject] {
_ = notification["aps"] as! [String : AnyObject]
(window?.rootViewController as! UITabBarController).selectedIndex = 3
}
答案 1 :(得分:1)
您在调试代码吗?如果应用程序在那里崩溃,很可能是window.rootViewController不是UITabBarController。
您可以调试或更改为!在? 和
tabbar?.selectedIndex = 3
如果应用程序没有崩溃,则标签栏控制器位于其他位置。找到它。
另请记住在选项词典中检查您的通知。