2009-01-27 73 views
11

我有一個簡單的基於NavigationController的應用程序。主窗口顯示一個TableView並選擇一個項目加載一個子視圖。我使用Interface Builder進行UI視圖。如何將TabBar添加到基於NavigationController的iPhone應用程序

現在我想添加一個TabBar到應用程序。我在哪裏放?我需要一個TabBarController嗎?它應該放在MainWindow.xib還是RootViewController.xib中?

如何將它與我的NavigationController綁定在一起?

+0

這將幫助我看到一個實際的完整工作xcode項目。有沒有人有鏈接? – bentford 2009-04-15 19:29:33

回答

2

查看UICatalog示例代碼。它有很多很棒的東西,包括從一個視圖到另一個視圖的過渡。

在你的情況,你需要使用的UITableView委託方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

在該方法中,您將創建並顯示您的標籤視圖控制器。這可能是一個具有關聯的Nib的自定義控制器,或者您可以根據自己的情況在代碼中創建整個事物。

2

簡單的答案是讓它成爲加載導航控制器的標籤欄應用程序。

標籤欄將成爲您的最高等級組件,然後您可以爲每個標籤加載導航控制器。從那裏它應該是相當標準的東西。前一陣子我必須學習這個難題。

您可以從XCode中的基本選項卡欄應用程序模板開始,它應該使用2個簡單視圖設置基本選項卡欄。

+0

對,但我該怎麼做? – 2009-01-27 11:22:24

2

只要有可能,最好在選項卡式應用程序中嵌入導航欄。以另一種方式進行操作會產生一些複雜性,在與IB一起完成時很困難,並且會導致很多麻煩。

+0

你是說我應該創建一個基於TabBarController的新項目,然後將我的導航控制器代碼整合到它中?我寧願保留我現有的項目,但如果它會產生很多麻煩,我想我可以開始一個新的項目。 – 2009-01-27 11:26:05

4

我在幾個應用程序中這樣做。將標籤欄添加到基於navigationController的應用程序的技巧是不使用TabBarController。爲視圖添加一個選項卡欄,使該視圖的視圖控制器成爲TabBarDelegate,並響應視圖控制器代碼中選項卡欄上的用戶選擇。

我使用標籤欄額外添加視圖標籤欄的視圖作爲子視圖,重新加載不同的數據集表視圖,重新加載一個UIPickerView等

+0

如果您有超過5個選項卡並希望允許用戶通過more ...按鈕「編輯」主選項卡,該怎麼辦?這是你可以免費得到的選項卡控制器 – 2009-02-23 09:55:47

+0

我不知道答案。我從來沒有在tabBar中使用超過4個選項卡,並且從不需要允許用戶編輯欄。我只知道你不能真的添加一個TabBarController到基於NavigationBar的應用程序 – Alpinista 2009-02-24 19:50:33

2

您可以使用Interface Builder編輯主窗口.xib,並將一個Tab Bar Controller添加到您的導航控制器。您還可以使用IB's Inspector窗口將UITabBarController的視圖控制器更改爲View/Navigation/Table View/Image Picker Controller。它會工作。

但是,我真的不建議將Tab Bar Controller放入導航控制器。如果你走得更遠(使其更復雜),這些控制器之間的關係會變得混亂。

假設您在選項卡欄控制器中有表格視圖控制器,並且想要調出詳細視圖。根據設計,您可能想要告訴導航控制器將視圖推送到堆棧,但這樣做會使細節視圖與您的選項卡欄控制器(在導航控制器下)和Table View Controller將關係保持爲詳細視圖的父級相同。這很奇怪,至少對我來說...

相關問題