如何在UITabBarController中呈现新的视图控制器

时间:2018-01-12 16:25:40

标签: ios uitabbarcontroller

情况如下:我的应用包含UITabBarController,其中包含许多UINavigationControllers,我希望在收到通知时打开特定的一个。

如果我想在UINavigationController中显示UITabBarController那已经没有问题,我可以轻松获取其索引并执行此操作。但我正在努力解决我必须打开UINavigationController(或任何UIViewController)尚未加入的情况。我不知道实现这一目标的方法是什么。我该怎么办?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您应该阅读.setViewControllers()

假设您的标签栏目前包含vc1 vc2vc3的标签,但您想要显示当前未分配给标签的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