2009-11-12 40 views
1

我有一個mainwindow.xib文件,其中UITabBarController作爲應用程序的基本視圖控制器。所以在UITabBarController中,我添加了約10個sub UIViewController對象作爲選項卡。它們中的大多數僅僅是UITableViewController小類或者包含UITableViewController小類的UINavigationController在mainwindow.xib中聲明UITabBarController的約定是什麼?

在此設計中,每個UIViewController都在應用程序啓動時完全加載,包括調用每個視圖控制器的viewDidLoad方法。有什麼辦法可以解決這個問題嗎?由於視圖控制器只是UITableViewControllers而沒有其他插座,所以爲每個選項卡創建一個NIB似乎過分了(我認爲這會允許viewDidLoad只在用戶第一次切換到選項卡時才被調用?或者我錯了? )

無論如何,我的問題主要是:如何按照慣例完成?如果你在一個UITabBarController上有10個不同的視圖控制器,你把它們全部放在mainwindow.xib中嗎?如果是這樣,每個人都應該擁有自己的NIB,如果沒有,您將他們放在哪裏,以及如何將它們添加到標籤欄?

回答

1

你想要做的就是在每個視圖的不同xib文件中定義UIViewController視圖 - 它們都被實例化的原因是,當xib加載時,xib加載的所有對象都加載 - 這意味着所有的因爲您在那裏定義了視圖和視圖控制器。

在MainWindow.xib中定義了標籤欄,您仍然可以在每個標籤中設置將被調用的視圖控制器類型以及用於該類型的XIB文件(使用「TabBar」創建一個新項目應用程序「模板和第二個默認視圖將是這樣)。

然後,當您按下標籤頁時,視圖控制器將從您定義的不同XIB文件實例化。

請注意,這意味着如果您使用IB將按鈕添加到導航欄,則必須在TabBar xib中執行此操作,而不是在用於定義視圖的xib中執行此操作。您仍然可以將操作鏈接到選項卡中的視圖控制器定義。

+0

足夠容易,我能夠創建一個NIB文件,併爲每個選項卡引用同一個文件,因爲它們幾乎只是一個普通的'UITableViews',代碼就是區別它們的代碼。 – 2009-11-12 20:30:49

0

蘋果公司建議爲純NIB文件做的方式是如何說:Each sub-view in its own NIB file。我想create the UITabBarController programmatically。這樣你就可以在代碼中定義你所有的簡單視圖,並且仍然是load complex views from NIB files

就我個人而言,我更傾向於儘可能以編程方式創建儘可能多的視圖。編譯後的代碼比NIB文件的佔用空間更小,我覺得我有更多的控制權。我大多使用Interface Builder來模擬應用程序。

+0

爲什麼降票? – 2009-11-12 16:34:44

+0

不是我,我發誓! – 2009-11-12 21:44:44