0

我有一個三視圖標籤欄應用程序的第二個視圖,我想包含一個導航控制器。在navcontroller中,第一個/根視圖將是一個包含uitableview的自定義uiview,當你觸摸一個單元格時將會推入另一個自定義的uiview來公開關於被觸摸的單元格的細節。添加一個UINavigationController到標籤欄應用程序

我發現了這樣做的文檔,但它對我來說沒有任何意義,或者似乎是飛過了我的腦海。該文檔說,你必須創建位於navcontroller視圖的uiviewcontroller,或者至少以編程方式引用它們。我一直在使用Interface Builder,並且使用它變得非常舒服,所以它在編程上使我感到有些害怕。

而且,這條從文檔代碼似乎令人不安:

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
[window addSubview:myNavigationController.view]; 
} 

以上摘自「視圖控制器編程爲的iPhoneOS」蘋果文檔

不會這個負載並立即顯示UINavigationView?

一個問題是我不想立即顯示navView。 navController/stack是輔助選項卡。所以我如何以及在哪裏實施我的navController(現在我已經在我的委託中激活了它(我認爲是正確的)?我已經能夠使用導航欄和空白視圖加載基本的UInavigationController,--minus自定義內容視圖,通過界面生成器,但我在一個頭緒來填充自定義內容的意見。

希望這是有道理的。

任何幫助,將不勝感激,

尼克

回答

1

首先要了解的是UINavigationController是如何工作的,它推送UIViewControllers,而不是視圖。在第二個選項卡(UINavigationController所在的位置)中發生了一些事情時,您會將UIViewController推入堆棧。

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

哪個是的UITableViewDelegate協議的一部分:

這在典型的做法。

因此,當調用tableView:didSelectRowAtIndexPath時,您需要計算出哪個UIViewController推入堆棧。您可以從一個筆尖加載該View Controller,或者以編程方式創建它。既然你對IB感到舒服,我會建議從筆尖加載它。

我不擔心像「我應該在哪裏實例化我的UINavigationController?馬上。首先,讓它工作。然後擔心事情「應該」發生的地方。

最好是讓UINavigationController的東西在單獨的項目中工作,然後將其摺疊到主項目中。這可讓您在關注導航控制器時忽略許多小細節。

+0

這很有道理,我一直在使用didselectrowatindexpath,所以我對這種方法很熟悉,但是我仍然對我在這裏應該做的事情有點困惑,我是否會向uinavcontroller發送一條消息(如果是這樣的話什麼信息?)?加上我甚至不能讓自定義的uitableview顯示爲uinavcontroller的自定義內容區域中的根控制器,所以如果你得到我的漂移,沒有辦法在索引路徑上選擇一行。感謝任何澄清。 Nick – nickthedude 2010-02-23 23:08:11

+0

我也喜歡你的想法,把它分解成一個單獨的應用程序,只是爲了簡化它,直到它是有道理的。謝謝。 – nickthedude 2010-02-23 23:36:51

+0

在tableView:didSelectRowAtIndexPath中:您應該向您的導航控制器發送pushView消息。您需要提供UIViewController作爲pushView的參數。這是控制您希望激活的視圖的VC。您可以以編程方式創建它或從筆尖加載它。 – 2010-02-24 04:26:37

相關問題