2011-06-05 88 views
4

我目前正在開發一個具有TabBarController和每個選項卡包含導航控制器的應用程序。通過這種方式,我可以通過將viewcontroller推送到導航控制器來顯示在視圖上選擇的行的詳細信息。每個視圖上面還有一個UINavigationItem。在這個導航項目中,我放置了一個按鈕。更改tabbar控制器中的選項卡的viewcontroller

但是現在我想改變某個標籤的viewcontroller,當點擊UINavigationItem中的按鈕時,但是我想改變的視圖(控制器)必須像該標籤的根視圖控制器一樣。

所以我不想在導航控制器上推另一個視圖,只是切換到該視圖(在同一個選項卡中),並使其充當根視圖控制器。

我找不到一個很好的方法來做到這一點,實際上使視圖正常工作。當我切換視圖時,它們或者不會釋放(這很好,因爲我想將內存使用量降到最低)。

解決這個問題的一種方法,可能是我添加更多的選項卡到我的TabBar控制器,並且當我點擊按鈕時切換到正確的選項卡,但這是最後的手段。

不太確定我是否正確描述了這一點,但我想知道做這件事的最好方法是什麼。我的首選是有3個視圖控制器並在它們之間切換。

回答

7

希望我正確理解你的問題:你想基本上'重置'你的導航控制器有一個新的根。

,你可以告訴你的導航控制器,你要顯示一組新的視圖控制器的做到這一點:

[navigationController setViewControllers:[NSArray arrayWithObject:newViewController] 
           animated:NO]; 

這將擺脫所有視圖控制器目前該導航控制器的堆棧上,並重置根視圖到newViewController

+0

非常簡單,它的工作方式與預期相似。謝謝! – 2011-06-05 11:29:26

+0

嗨,我相信這是有效的,如果你有一個NavigationController作爲self.window.rootViewController。不過,我正在實現一個TabBarViewController和self.window.rootViewController = tabBarViewController。無論如何,我仍然可以像原來的UITabBarController一樣獲得相同的結果。 – 2012-09-26 16:15:44

+0

我們應該那樣做。 (ViewWillAppear或tabbarController委託方法) – umakanta 2016-07-07 07:50:08

相關問題