2009-11-05 78 views
0

我正在構建一個具有5個選項卡的應用程序,每個選項卡都具有表格+項目詳細信息視圖。Cocoa-Touch:將UITabBarController與多個選項卡一起用作UINavigationControllers

所以我必須創建一個UITabBarController和項目而不是直接的看法是UINavigationController s的內部的默認視圖。

我已經做到了這一點,它的工作原理,但..

這難道不是一種浪費?看看UITabBarController所做的只是在標籤欄中創建一個導航控制器和一組按鈕,以便推送和彈出它的項目。

是否有可能以某種方式使用UITabBarController的導航控制器而不是創建5個新的?

回答

3

不,這不是浪費。每個選項卡都是一個單獨的視圖堆棧,這就是爲什麼您需要不同的導航控制器 - 導航控制器只能有一個根對象,而不是四個或五個。

當您切換標籤頁時,它會返回到您導航到的位置 - 並且當您按兩次標籤頁時,它會告訴導航控制器跳到堆棧頂部。如果您在所有選項卡上只使用一個導航控制器,則會中斷 - 就像選項卡中的導航欄的特定定製一樣。

它不像導航控制器甚至有自己的看法。這只是一個視圖控制器對象所佔用的空間,它根本就沒有太多......

1

UITabBarController將其子選項卡表示爲UIViewController的數組,而不是UINavigationController的數組。因此,您的方法完全正確:當您想要在給定選項卡中實現導航時,請使用UINavigationController s(UIViewController的子類)代替標準視圖控制器。

+0

我同意你剛纔所說的,但'UITabBarController'仍然執行視圖切換,這正是'UINavigationController'當用'animated:NO'推動視圖時,我懷疑它可能在後臺有一個導航控制器。 – Prody 2009-11-05 16:47:23

+0

你說得對,UITabBarControllers和UINavigationControllers都做視圖切換。這個「管理視圖」概念是從它們的公共超類UIViewController繼承而來的。你應該把UINavigationController和UITabBarController當作兄弟。 我相信他們不依賴彼此存在,並且他們都以不同的方式管理他們的子視圖。 – awolf 2009-11-05 17:19:52

相關問題