【发布时间】:2017-04-05 15:14:56
【问题描述】:
我需要以编程方式从另一个 Storyboard 转到视图控制器。从这里轻松。但问题是:viewController 嵌入在导航控制器中,而这个嵌入在 tabBarController 中(见图)
我试过了:
let storyboard = UIStoryboard(name: "Inside", bundle: nil)
let viewcontroller = storyboard.instantiateViewController(withIdentifier: "controller_id")
let navigationController = UINavigationController(rootViewController: viewcontroller)
self.present(navigationController, animated: true, completion: nil)
我得到的是:我转到正确的控制器,导航控制器工作,但没有 tabbarcontroller
再试一次:
let storyboard = UIStoryboard(name: "Inside", bundle: nil)
let tabbar = storyboard.instantiateViewController(withIdentifier: "tab_id")
let navigationController = UINavigationController(rootViewController: tabbar)
self.present(navigationController, animated: true, completion: nil)
在这种情况下,标签栏正在工作,但没有导航控制器。
然后……试试 3 号:
let storyboard = UIStoryboard(name: "Inside", bundle: nil)
let tabbar = storyboard.instantiateViewController(withIdentifier: "tab_id")
let viewcontroller = storyboard.instantiateViewController(withIdentifier: "race_id")
let navigationController = UINavigationController(rootViewController: tabbar)
navigationController.pushViewController(viewcontroller, animated: false)
self.present(navigationController, animated: true, completion: nil)
在这种情况下,行为是如此奇怪......我出现在正确的控制器中,但带有一个后退按钮。如果我单击我会转到同一个正确的控制器...使用 tabbarcontroller...然后导航控制器消失...很好:S
任何方式以编程方式转到正确的控制器并开始工作标签栏和导航?
【问题讨论】:
-
你有没有试过在标签栏控制器的故事板属性中检查“是初始视图控制器”,然后简单地做
UIStoryboard(..).instantiateInitialViewController()? -
在您以编程方式创建导航控制器的所有示例中,尝试从
Insidestoryboard by id 获取导航控制器 -
你从哪里开始?您是否在选项卡“A”中,并且想要将
I need to go here加载为NavigationController的RootViewController作为选项卡“B”? -
@wbarksdale 引导我找到正确的答案。关键是检查“是初始视图控制器”并显示标签栏控制器。
标签: ios iphone swift uiviewcontroller uitabbarcontroller