我会尽量让自己变得清晰,但英语不是我的母语,所以我很抱歉给您带来不便。
我一直在关注这个http://www.appcoda.com/core-spotlight-framework/以展示我在聚光灯搜索中的一些应用功能,但我仍然坚持展示每个功能的视图控制器。主要(我认为),因为我的应用程序是一个标签。这是我的故事板的截图:
因此,在尝试使用此方法时:
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
let viewController = (window?.rootViewController as! UINavigationController).viewControllers[0] as! consultaCorralones
viewController.restoreUserActivityState(userActivity)
return true
}
(consultaCorralones是我希望展示的视图控制器)
当我运行它时,我收到错误:
无法将'UITabBarController'类型的值(0x11041d5d8)转换为'UINavigationController'(0x11041d588)。
我有限的Swift知识告诉我将UINavigationController
更改为UITabBarController
,但这样做我得到:
无法将'UINavigationController'类型的值(0x1117b8588)转换为'Parcial2.consultaCorralones'(0x10fb83200)。
我也尝试过关注Perform Segue from App Delegate swift,但这不起作用。
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
UIApplication.sharedApplication().keyWindow?.rootViewController
返回UITabBarController
。您需要从中获取selectedViewController
。那将是UINavigationController
个实例。
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
let controller = UIApplication.sharedApplication().keyWindow?.rootViewController as! UITabBarController
let navController = controller.selectedViewController as? UINavigationController
let viewController = navController?.viewControllers[0] as! consultaCorralones
viewController.restoreUserActivityState(userActivity)
return true
}
希望它有所帮助。