2012-02-14 74 views
1

我有应用程序包含TabBarController和导航Controller.I有两个选项卡作为tabA和tabB。 默认的selecetd选项卡是1(tabB)与视图控制器L(当应用程序完成其启动时)。现在用户可以导航为:L => M => N => O。 tabA的视图控制器是x.user可以导航为:x => y => z。 有在其上应导航/入栈/出栈消费者根视图塔布的控制器视图控制器与z视图控制器的顶部的按钮L.从任何其他选项卡的视图控制器弹出第二个选项卡的根视图(默认)

任何sugestions,由于

回答

7

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

的方法应该是这个样子:

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

    [target.navigationController popToRootViewControllerAnimated: NO]; 

    [self.tabBarController setSelectedIndex:1]; 
} 
+0

+1:使用这个答案......你只比我快了几秒:) – Jhaliya 2012-02-14 15:09:19

+0

Uuuhh我讨厌这种情况发生。对不起:) – 2012-02-14 15:10:49

+0

谢谢,我已经能够弹出到根视图控制器,但它总是弹出到tabB.Means的视图控制器中的最后一个导航项目,如果消费者从以下位置导航:L => M => N => O in tabB,现在离开tabB到哪里(是L/M/N/o)。现在来自tabA,如果我尝试弹出tabB的根视图控制器,它会弹出到他离开导航到tabB的位置(L/M/N /O).i只想用选中的标签1(选定标签工作正常)将他导航至L. – Alok 2012-02-14 15:49:16

1

你需要弹出到当前的TabBar的根源然后使用的TabBar控制器的方法来选择使用的setSelectedIndex方法在标签栏按钮..

+0

谢谢指点我正确的方向 – Alok 2012-02-16 18:09:40

1

我有类似的问题,但我想我找到了一个更简单的方法来处理它。在用户可能最终上(在最初的问题O或Z)的视图控制器,我把

[self.navigationController popToRootViewControllerAnimated:NO]; 

在这些虚电路的viewWillDisappear。看起来很简单,容易。我错过了我不想这样做的原因吗?与原始提问者一样,我总是希望从我的选项卡的根VC开始,无论用户最后一次在该选项卡上停留的位置。

快速更新:我建立我自己的一个拆分视图控制器的版本,并添加上述行viewWillDisappear没有在iPad上一些不良的东西,所以我不得不添加一个条件,以检查设备类型(这是没有影响通过标签栏问题无论如何,因为这两个视图控制器是我构建的splitVC的一部分),但似乎做了我想要的。

相关问题