UINavigationController

UINavigationController

我正在尝试从推送通知中打开我的应用程序时显示视图控制器,但是由于我试图获取UINavigationController(它尚未在AppDelegate didFinishLaunchingWithOptions函数中进行初始化)而导致崩溃。

我的代码是这样的:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    if let userInfo = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let profileController = storyboard.instantiateViewControllerWithIdentifier("profileViewControllerIdentifier") as! ProfileViewController

        let navigationController = self.window?.rootViewController as! UINavigationController
        navigationController.pushViewController(profileController, animated: false)
    }
}

在关闭应用程序时从推送通知中显示ViewController的正确方法是什么?

最佳答案

因此,我看到的主要原因是您的rootViewController不是UINavigationController。可能是因为:

  • rootViewController是另一个UIViewController
  • 故事板中的UINavigationController未设置为rootViewController

  • 因此,如果没有关于self.window?.rootViewController的信息,我想可以运行此行以查看是否可以得到UINavigationController:
    var myNav = storyboard.instantiateViewControllerWithIdentifier("myNavIdHere") as? UINavigationController
    

    只需确保将一个ID添加到您的UINavigationController中即可。 (这只是检查您是否可以到达NavController)

    关于ios - 关闭应用程序时从推送通知中显示ViewController的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33962177/

    10-13 05:37