1

现在让我解释清楚,

我在 viewcontroller 中有一个 tabbarcontoller,它是单视图应用程序项目的主视图控制器。

我在 viewcontroller 中添加了一个 tabbarcontroller 作为子视图。在 tabbarcontroller 中,我添加了两个导航控制器,如下图所示,

在此处输入图像描述

我添加了三个(名为 First、Second、Third)的视图控制器作为新文件。

如果我使用以下代码在第一个选项卡中从一个视图控制器导航到另一个视图控制器,

third =  [[Third alloc] initWithNibName:@"Third" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:third animated:YES];

然后我通过单击 tabbarcontroller 下方的选项卡切换到第二个选项卡。

进而

如果我通过单击第三个视图控制器中的按钮切换到下一个选项卡(第一个选项卡),

-(IBAction)switchtab
{
    vc.tabctrl.selectedIndex=0;
    //vc is the main viewcontroller to which the tabbarcontoller(tabctrl) added as subview
}

切换到下一个选项卡后,我应该弹出rootviewcontroller,我尝试了下面的代码

-(IBAction)switchtab
{
    vc.tabctrl.selectedIndex=0;
    [vc.tabctrl.navigationController  popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
}

但它跳转到下一个选项卡但 popToViewController 不起作用,有什么建议吗?

4

2 回答 2

3

如果您的视图控制器是导航控制器,那么当您切换选项卡时,以下代码将更改为根视图

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    if ([self.tabBarController.selectedViewController isKindOfClass:[UINavigationController class]])
    {
        [(UINavigationController*)self.tabBarController.selectedViewController popToRootViewControllerAnimated:YES];


    }

}
于 2013-10-21T11:29:57.560 回答
1

我不了解这里的整个结构,但我意识到您正在使用不同的控制器来推送 vc“第三个”并弹出到根目录。你能试一下吗:

[self.navigationController  popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];

在同一个班你用来推“第三”?

编辑:另一种选择,你可以试试这个:

-(IBAction)switchtab
{
    vc.tabctrl.selectedIndex=0;
    [(UINavigationController*)vc.tabctrl.selectedViewController popToRootViewControllerAnimated:YES];

}
于 2013-10-21T11:56:48.700 回答