我的应用程序由TabBarController和Navigation Controller组成。我有两个标签tabA和tabB。 默认的selecetd选项卡是1(tabB),带有视图控制器L(当应用程序完成启动时)。现在用户可以导航为:L => M => N => O. tabA的视图控制器是x.user可以导航为:x => y => z。 z视图控制器顶部有一个按钮,它应该使用视图控制器L导航/推送/弹出消费者到tabB的根视图控制器。
任何sugestions,谢谢
答案 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的一部分),但似乎做了我想做的事。