聚光灯搜索后显示视图控制器

时间:2016-05-09 03:46:02

标签: ios swift corespotlight

我会尽量让自己变得清晰,但英语不是我的母语,所以我很抱歉给您带来不便。

我一直在关注这个http://www.appcoda.com/core-spotlight-framework/以展示我在聚光灯搜索中的一些应用功能,但我仍然坚持展示每个功能的视图控制器。主要(我认为),因为我的应用程序是一个标签。这是我的故事板的截图:

storyboard

因此,在尝试使用此方法时:

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,但这不起作用。

任何帮助都将受到高度赞赏。

1 个答案:

答案 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
}

希望它有所帮助。