2012-02-14 78 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的一部分),但似乎做了我想要的。

相關問題