2011-02-07 79 views
0

我在我的appdelegate中創建了一個UINavigationController,並使用我的「modelselectionViewController」對其進行了初始化。這個VC有不同的uibuttons,當觸摸時,一個新的VC(「modelViewController」)被推送到導航堆棧上。整個應用程序的一個UINavigationcontroller?

這個「modelViewController」充當我的模板視圖,並具有帶有不同選項卡的uitabbarcontroller。第一個VC立即顯示,但導航控制器上的任何更改都不起作用。我想設置標題的名稱,但該navigationcontroller爲空。

NSLog(@「navi:%@」, self.navigationController);

如果我改變我的代碼,當觸摸不同的標籤時推動不同的VC,導航的作品,但只有第三級導航層次。

我想知道是否可以爲我所有不同的選項卡使用一個導航控制器。希望我明確了我的設置。感謝你的幫助。謝謝

回答

0

如果您從UINavigationController中管理的視圖創建UITabBarController(即:如果您首先創建navigationcontroller,並且它仍在創建tabbarcontroller時),那麼您就開始與框架進行鬥爭。下面是來自文檔上結合的ViewController接口警告:

使用一個標籤欄 控制器還可以使用導航 控制器在一個或多個標籤中的應用。當 將這兩種類型的視圖控制器組合在相同的用戶界面 中時,標籤欄控制器總是充當用於導航 控制器的包裝器 。您從不想將 標籤欄控制器推到導航控制器的導航 堆棧上。 這樣做會造成異常情況 只能在特定視圖控制器位於導航堆棧頂部 處時出現選項卡欄。標籤欄 被設計爲持久的,因此 這種瞬態方法可能會讓用戶產生混淆。

我讀的是「如果不破的東西,我們還沒有在下次更新時認爲,我們可能會拒絕反正應用程序,因爲它是「混淆用戶。」

我假設你不需要返回,就可以終止整個導航層次和導航控制器(就像你剛剛用它來做一次性設置屏幕一樣)。或者,您可以查看導航控制器管理的視圖控制器內的其他導航選項。

有一件事要嘗試導航到UITableView,並使用其單元格將模態視圖推送到導航堆棧上。這對於用戶來說是熟悉的,並且與導航類的意圖一起動搖。

1

我想你可能想讀Combining ViewControllers

通常,您應該將tabbar控制器作爲「根」控制器,而不是「子」控制器。在蘋果的文檔中快速搜索並沒有產生正式的「禁止」,但它可能是。