iOS标签栏 - 更改为第一个标签和第一个ViewController

时间:2012-10-09 13:02:42

标签: ios uinavigationcontroller uitabbarcontroller

我需要一些关于Tabbar应用程序的帮助。

目前我的Tabbar如下所示:

  • TabbarController
    • TAB1
      • NavigationController
        • ViewController1
        • ViewController2
    • TAB2
      • ViewController3

假设ViewController2是当前显示的ViewController。现在我切换到ViewController3并希望以编程方式切换到ViewController1。

问题是,因为Tab1中的活动ViewController是ViewController2

[self.tabBarController setSelectedIndex:0];

将始终切换到ViewController2。 但是在这种情况下如何切换到ViewController1?

这对我来说也不合适:

self.tabBarController.selectedViewController
= [self.tabBarController.viewControllers objectAtIndex:0];

一些提示会很高兴。

4 个答案:

答案 0 :(得分:3)

您必须从导航控制器弹出viewController2。只是做

[self.tabBarController setSelectedIndex:0];
[(UINavigationController*)[self.tabBarController.viewControllers objectAtIndex:0] popViewControllerAnimated:NO];

答案 1 :(得分:3)

在代码中设置selectedIndex后,您可以弹回导航堆栈的根视图控制器:

self.tabBarController.selectedIndex = 0;
UINavigationController *navController = self.tabBarController.selectedViewController;
[navController popToRootViewControllerAnimated:NO];

答案 2 :(得分:2)

使用类似

的内容
UINavigationController *navController=(UINavigationController*)[self.tabBarController.viewControllers objectAtIndex:0];
[navController popToRootViewControllerAnimated:YES];

希望这有帮助

答案 3 :(得分:0)

Swift 3版

 self.tabBarController?.selectedIndex = 0
 let navController = self.tabBarController?.selectedViewController as! UINavigationController
 navController.popToRootViewController(animated: true)