聚光灯搜索后显示视图控制器
Posted
技术标签:
【中文标题】聚光灯搜索后显示视图控制器【英文标题】:Show view controller after spotlight search 【发布时间】:2016-05-09 03:46:02 【问题描述】:我会尽量让自己清楚,但英语不是我的母语,所以对于给您带来的不便,我深表歉意。
我一直在关注这个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,但没有成功。
我们将不胜感激。
【问题讨论】:
试试let viewController = (window?.rootViewController as! UITabBarController).selectedViewController as! consultaCorralones
谢谢,但它一直显示相同的错误Could not cast value of type 'UINavigationController' (0x1022f6588) to 'Parcial2.consultaCorralones' (0x1006c1200).
我正在尝试猜测您的视图层次结构;试试let viewController = ((window?.rootViewController as! UITabBarController).selectedViewController as! UINavigationController).topViewController as! consultaCorralones
【参考方案1】:
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
希望对您有所帮助。
【讨论】:
以上是关于聚光灯搜索后显示视图控制器的主要内容,如果未能解决你的问题,请参考以下文章