2013-11-22 27 views
2

我開始學習iOS開發,並試圖將UINavigationController用作我的窗口的根視圖。所有工作都很好,但我需要一些關於如何構建我的應用程序的建議。我也閱讀了文檔和一些問題。如何使用UINavigationController作爲窗口的根視圖來構建應用程序

由於導航控制器正在管理所有其他內容視圖控制器,因此所有這些視圖控制器都需要一種將消息發送到導航控制器的方式。對?所以,我曾想過製作一個單一的導航控制器,以便任何其他視圖控制器可以調用它來推送新的視圖控制器。或者,如果每個視圖控制器都有對導航控制器的引用,那麼他們也可以很容易地推/彈出。這是我不確定的部分。

此外,對於有按鈕和操作,我一直在設置目標作爲導航控制器,並從那裏它可以正確處理它,並推動或彈出它自己。我做了這個UINavigationController的子類。我有我的視圖控制器作爲參考。然而,我遇到了一個問題,我的UITableViewController正在處理一行選擇,我需要在頂部推一個新的視圖控制器,但我怎樣才能獲得對導航控制器的引用?

我希望這是有道理的,任何關於如何構建這個建議的建議都將非常感激。

謝謝!

回答

0

我認爲你正在反思這一點。視圖控制器內置一個navigationController屬性,允許您引用導航控制器。話雖這麼說,從嵌入在導航控制器視圖控制器內推到一個新的視圖控制器一樣簡單:

UIViewController *myNewViewController = [[UIViewController alloc] init]; 

[self.navigationController pushViewController:myNewViewController animated:YES]; 
+0

工作!你會推薦我的UINavigationController的子類還是不必要的? – zkokaja

+0

@zaidk不,這不應該是必要的。 –

+0

如果你沒有初始化任何nib名字,它會加載什麼? –

0

根據你的要求,你需要這樣寫: -

 UIViewController *myNewViewController = 
    [[[UIViewController alloc] 
    initWithNibName:@"yourNibName"] 
    bundle:nil]]; 

    [self.navigationController 
    pushViewController:myNewViewController 
    animated:YES]; 

這將推動堆棧底部的一個控制器。

+0

我認爲你錯過了這一點。我的回答與我一樣普遍,因爲OP從未指定視圖控制器是通過xib/storyboard /以編程方式創建的。 –

相關問題