情况如下:我的应用包含UITabBarController
,其中包含许多UINavigationControllers
,我希望在收到通知时打开特定的一个。
如果我想在UINavigationController
中显示UITabBarController
那已经没有问题,我可以轻松获取其索引并执行此操作。但我正在努力解决我必须打开UINavigationController
(或任何UIViewController
)尚未加入的情况。我不知道实现这一目标的方法是什么。我该怎么办?
感谢您的帮助。
答案 0 :(得分:0)
您应该阅读.setViewControllers()
。
假设您的标签栏目前包含vc1
vc2
和vc3
的标签,但您想要显示当前未分配给标签的someOtherVC
。
if let someOtherVC = self.storyboard?.instantiateViewController(withIdentifier: "someOtherVC") {
// append someOtherVC to the tab bar controller's array of view controllers
self.tabBarController?.viewControllers?.append(someOtherVC)
// show the newly added tab / view controller
self.tabBarController?.selectedIndex = (self.tabBarController?.viewControllers?.count)! - 1
}
和viewDidLoad()
的{{1}}:
someOtherVC
答案 1 :(得分:-1)
在我的应用程序中,根视图控制器是一个UINavigation控制器。在应用程序的某个点上,我需要显示一个UITabBar。我尝试在导航层次结构中的UIView上实现UITabBar,正如之前的一些帖子所建议的那样,这确实有效。但我发现我想要更多的标签控制器提供的默认行为,我找到了一种方法来使用UITabBarController和UINavigation控制器:
1)当我想显示UITabBarController的视图时,我这样做:
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.window.rootViewController = myUiTabBarControllerInstance;
使用1在tabbar中显示viewControllers
2)当我想回到我在导航层次结构中的位置时,我这样做:
appDelegate.window.rootViewController = myNavControllerInstance;
使用2来显示viewController out tabbar