当用户点击推送通知时,我希望将它们带到我的应用中的特定表视图控制器。此表视图控制器嵌入在导航控制器中,该控制器嵌入在选项卡栏控制器(我的根视图控制器)中。下面显示的图像显示了这一点。
根视图Tab Bar Controller的故事板ID为“HomeVC”,类名为“HomeViewController”,导航控制器的故事板ID为“SettingsNavigationVC”,而Table View Controller的故事板ID为“SettingsTableVC” “和类名”SettingsNavigationVC“。
我有推送通知正常工作。通过工作,我的意思是我可以从设备发送消息并在另一台设备上接收它,但是当接收器点击通知时,我似乎无法打开除根视图控制器之外的任何其他视图控制器。根据我正在使用的push notification guide,我在didReceiveRemoteNotification
方法中使用以下代码:
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject: AnyObject]) {
let rootVC = self.window!.rootViewController
if PFUser.currentUser() != nil {
let settingsTableVC = SettingsTableViewController()
rootVC?.navigationController?.pushViewController(settingsTableVC, animated: false)
}
}
我做错了什么,或者我该怎样做才能呈现正确的视图控制器?
答案 0 :(得分:4)
试试这个
let storyboard = UIStoryboard(name: "YourStoryboardName", bundle: nil)
let rootVC = storyboard.instantiateViewControllerWithIdentifier("HomeVC") as! UITabBarController
if PFUser.currentUser() != nil {
rootVC.selectedIndex = 2 // Index of the tab bar item you want to present, as shown in question it seems is item 2
self.window!.rootViewController = rootVC
}
答案 1 :(得分:3)
要推送到特定的视图控制器,您必须替换以下行:
你的:
rootVC?.navigationController?.pushViewController(settingsTableVC, animated: false)
我是:
rootVC?.visibleViewController.navigationController?.pushViewController(settingsTableVC, animated: true)
要呈现任何视图控制器,您必须使用:
rootVC?.visibleViewController.navigationController?.presentViewController(settingsTableVC, animated: false, completion: nil)