用swift在didReceiveRemoteNotification中呈现特定的视图控制器

当用户点击一个推送通知,我希望他们被带到我的应用程序中的特定表视图控制器。 这个表格视图控制器embedded在一个导航控制器中,该控制器embedded在标签栏控制器(我的根视图控制器)中。 下图显示了这一点。

在这里输入图像说明

根视图选项卡栏控制器具有“HomeVC”的故事板ID和“HomeViewController”的类名,导航控制器具有“SettingsNavigationVC”的故事板ID,并且表视图控制器具有“SettingsTableVC”的故事板ID和类名“SettingsNavigationVC”。

我推送通知工作。 通过工作,我的意思是我可以从一个设备发送消息,并在另一个设备上接收它,但是当接收器点击通知时,我似乎无法得到任何其他视图控制器打开比根视图控制器。 根据我使用的推送通知指南 ,我在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) } } 

我做错了什么,或者我该做什么来呈现正确的视图控制器?

尝试这个

 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 } 

为了推到特定的视图控制器,你必须replace下面的行:

你:

 rootVC?.navigationController?.pushViewController(settingsTableVC, animated: false) 

矿:

 rootVC?.visibleViewController.navigationController?.pushViewController(settingsTableVC, animated: true) 

而为了呈现任何视图控制器,你必须使用这个:

 rootVC?.visibleViewController.navigationController?.presentViewController(settingsTableVC, animated: false, completion: nil)