我希望能够以编程方式在UITabBarController上选择一个选项卡,然后访问已加载的视图以设置默认情况下加载的段。
例如,如果我有一个菜单并单击名为“ A / B”的按钮,则希望它选择“ A”选项卡,然后选择“ B”段。如果我单击标题为“ A / C”的按钮,则希望它选择“ A”标签,然后选择“ C”部分。
我已经设法弄清了问题的第一部分:
class TabBarController: UITabBarController {
...
func selectTab(name: String) {
for tab in self.viewControllers! {
if(name == tab.tabBarItem.title) {
self.selectedViewController = tab
return
}
}
}
}
我不确定如何获取自动打开的视图。最好的方法是什么?
非常感谢!
答案 0 :(得分:0)
最后,我意识到我可以从self.selectedViewController
获得导航控制器,然后再从topViewController
获得导航控制器。
例如,如果我有一个名为NavigationController
的导航控制器和一个名为GroupsViewController
的视图控制器,则可以执行以下操作:
func selectTab(name: String, contentType: ContentType? = nil) {
for tab in self.viewControllers! {
if(name == tab.tabBarItem.title) {
self.selectedViewController = tab
if let nc = self.selectedViewController as? NavigationController{
if let vc = nc.topViewController {
if let gvc = vc as? GroupsViewController {
gvc.activeContentType = contentType
}
}
}
return
}
}
}
请注意,我必须设置一个ViewDidAppear
中要使用的变量(类型为ContentType),而不是像我最初计划的那样访问段控件(因为尽管可能存在选项卡,但视图控制器可能没有已加载)。