iOS选项卡栏-更改为第一个选项卡和第一个ViewController

iOS选项卡栏-更改为第一个选项卡和第一个ViewController,ios,uinavigationcontroller,uitabbarcontroller,Ios,Uinavigationcontroller,Uitabbarcontroller,我需要一些关于Tabbar应用程序的帮助 当前,我的选项卡栏如下所示: 塔巴控制器 表1 导航控制器 视图控制器1 视图控制器2 表2 视图控制器3 假设ViewController2是当前显示的ViewController。现在我切换到ViewController3,并希望以编程方式切换到ViewController1 问题是,因为选项卡1中的活动ViewController是ViewController2 [self.tabBarController setSelecte

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

当前,我的选项卡栏如下所示:

  • 塔巴控制器
    • 表1
      • 导航控制器
        • 视图控制器1
        • 视图控制器2
    • 表2
      • 视图控制器3
假设ViewController2是当前显示的ViewController。现在我切换到ViewController3,并希望以编程方式切换到ViewController1

问题是,因为选项卡1中的活动ViewController是ViewController2

[self.tabBarController setSelectedIndex:0];
将始终切换到ViewController2。 但在这种情况下,我如何切换到ViewController1

这也不适合我:

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

我很乐意提供一些提示。

您必须从导航控制器中弹出viewController2。照办

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

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

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

UINavigationController *navController=(UINavigationController*)[self.tabBarController.viewControllers objectAtIndex:0];
[navController popToRootViewControllerAnimated:YES];
希望这对Swift 3版有所帮助

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