使用 UITabbarController 和 UINavigationController 从 storyboard 调用 View
Posted
技术标签:
【中文标题】使用 UITabbarController 和 UINavigationController 从 storyboard 调用 View【英文标题】:Call View from storyboard with UITabbarController and UINavigationController 【发布时间】:2016-09-07 21:23:05 【问题描述】:我正在尝试为我的 ios 应用实现 3D 快速操作。 我已经设法添加了快速操作并想在我的故事板中打开一个视图控制器。
我的根控制器是一个 UITabbarController。在这里面我有一个 UINavigationController。
我关注了这个tutorial
然后我想在 appdelegate 中打开一个搜索视图,并尝试像教程中那样做。但我只看到黑屏。
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void)
if shortcutItem.type == "com.traning.addStuff"
let sb = UIStoryboard(name: "Main", bundle: nil)
let searchVC = sb.instantiateViewControllerWithIdentifier("Search") as! SearchView
let root = UIApplication.sharedApplication().keyWindow?.rootViewController
root?.presentViewController(searchVC, animated: false, completion: () -> Void in
completionHandler(true)
)
我的视图控制器是 UINavigationController 中的第三个视图控制器
[UITab] -> [UINav] -> [UINav] -> [UINav]
我尝试将根视图初始化为 UITabbarController,但如何访问或调用我的视图为 UINavigationController?
有什么建议吗?
谢谢!
编辑:
我添加了一张图片来说明我的故事板(这只是一个示例) 我有一个 UITabBarController -> UINavigationController -> FirstView -> SecondView
使用我想要调用 SecondView 的 3D 快速操作。
【问题讨论】:
建议在演示之前尝试 root?.definesPresentationContext = true。希望有帮助:) @LucianoAlmeida 嘿,谢谢,但它仍然不起作用。我正在接收此日志输出。警告:尝试在视图不在窗口层次结构中的对于所有遇到相同问题的人,我在这里找到了解决方案: http://blog.opendatalab.de/hack/2015/10/25/3d-touch-with-tabbarcontroller-and-navigationcontroller
所以这里是我用来调用 secondView 的代码:
if let tabController = self.window?.rootViewController as? UITabBarController
tabController.selectedIndex = 1
let navController = tabController.selectedViewController as? UINavigationController
navController?.popToRootViewControllerAnimated(false)
let firstView = navController?.viewControllers[0]
firstView?.performSegueWithIdentifier("second", sender: nil)
tabController.selectedIndex 取决于您要在其中执行 segue 的 UITabBarController 中的视图项。我的情况是它是 UITabBarController 的第二项。
我希望这会有所帮助。
【讨论】:
以上是关于使用 UITabbarController 和 UINavigationController 从 storyboard 调用 View的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController和UITabBarController
继承 UITabBarController 和 UINavigationController
一起使用 UITabBarController 和 UINavigationController