使用 Swift 在 didReceiveRemoteNotification 中显示特定的视图控制器
Present specific view controller in didReceiveRemoteNotification with Swift
当用户点击推送通知时,我希望将他们带到我的应用程序中的特定 table 视图控制器。这个 table 视图控制器嵌入在导航控制器中,导航控制器嵌入在标签栏控制器(我的根视图控制器)中。下图显示了这一点。
根视图选项卡栏控制器的故事板 ID 为 "HomeVC",class 名称为 "HomeViewController",导航控制器的故事板 ID 为 "SettingsNavigationVC", Table 视图控制器的故事板 ID 为 "SettingsTableVC",class 名称为 "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)
}
}
我哪里做错了,或者我必须怎么做才能显示正确的视图控制器?
为了推送到特定的视图控制器,您必须替换以下行:
你的:
rootVC?.navigationController?.pushViewController(settingsTableVC, animated: false)
我的:
rootVC?.visibleViewController.navigationController?.pushViewController(settingsTableVC, animated: true)
要呈现任何视图控制器,您必须使用这个:
rootVC?.visibleViewController.navigationController?.presentViewController(settingsTableVC, animated: false, completion: nil)
试试这个
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
}
当用户点击推送通知时,我希望将他们带到我的应用程序中的特定 table 视图控制器。这个 table 视图控制器嵌入在导航控制器中,导航控制器嵌入在标签栏控制器(我的根视图控制器)中。下图显示了这一点。
根视图选项卡栏控制器的故事板 ID 为 "HomeVC",class 名称为 "HomeViewController",导航控制器的故事板 ID 为 "SettingsNavigationVC", Table 视图控制器的故事板 ID 为 "SettingsTableVC",class 名称为 "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)
}
}
我哪里做错了,或者我必须怎么做才能显示正确的视图控制器?
为了推送到特定的视图控制器,您必须替换以下行:
你的:
rootVC?.navigationController?.pushViewController(settingsTableVC, animated: false)
我的:
rootVC?.visibleViewController.navigationController?.pushViewController(settingsTableVC, animated: true)
要呈现任何视图控制器,您必须使用这个:
rootVC?.visibleViewController.navigationController?.presentViewController(settingsTableVC, animated: false, completion: nil)
试试这个
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
}