当我的应用程序从推送通知中打开时,我试图显示一个视图控制器,但它崩溃了,因为我试图获取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的正确方法是什么?
答案 0 :(得分:0)
因此,我看到的主要原因是您的rootViewController
不是UINavigationController
。可能是因为:
rootViewController
是另一个UIViewController
UINavigationController
未在故事板中设置为rootViewController
。所以没有关于你从self.window?.rootViewController
获得什么的任何印刷品我认为你可以运行这一行来看看你是否可以获得UINavigationController
:
var myNav = storyboard.instantiateViewControllerWithIdentifier("myNavIdHere") as? UINavigationController
只需确保为您的UINavigationController添加ID即可。 (这只是为了检查你是否可以访问你的NavController)
答案 1 :(得分:0)
刚刚发现问题所在,我正在访问一些尚未初始化的导航控制器中的数据。