从任何其他选项卡的视图控制器弹出第二个选项卡的根视图(默认)

时间:2012-02-14 14:58:02

标签: iphone uinavigationcontroller uitabbarcontroller

我的应用程序由TabBarController和Navigation Controller组成。我有两个标签tabA和tabB。 默认的selecetd选项卡是1(tabB),带有视图控制器L(当应用程序完成启动时)。现在用户可以导航为:L => M => N => O. tabA的视图控制器是x.user可以导航为:x => y => z。 z视图控制器顶部有一个按钮,它应该使用视图控制器L导航/推送/弹出消费者到tabB的根视图控制器。

任何sugestions,谢谢

3 个答案:

答案 0 :(得分:7)

如果我正确理解你的问题,这不应该是难的。

该方法应如下所示:

- (void) pop
{
    UIViewController * target = [[self.tabBarController viewControllers] objectAtIndex:1];

    [target.navigationController popToRootViewControllerAnimated: NO];

    [self.tabBarController setSelectedIndex:1];
}

答案 1 :(得分:1)

您需要弹出当前标签栏的根目录,然后使用标签栏控制器方法使用 setSelectedIndex 方法选择标签栏按钮。

答案 2 :(得分:1)

我有类似的问题,但我认为我找到了一种更简单的方法来处理它。在用户可能最终打开的视图控制器中(初始问题中的O或Z),我放了

    [self.navigationController popToRootViewControllerAnimated:NO];

在那些VC的viewWillDisappear中。看似简单直接。我错过了我不想这样做的原因吗?与原始提问者一样,我总是希望从我的标签的根VC开始,无论用户上次在该标签页上的位置如何。

快速更新:我构建了自己的分割视图控制器版本,并将上面的行添加到viewWillDisappear上,在iPad上做了一些不良的事情,所以我不得不添加条件来检查设备类型(不受影响标签栏问题无论如何,因为两个视图控制器都是我构建的splitVC的一部分),但似乎做了我想做的事。