對不起,漫長的故事 -如何視圖控制器「嵌入」本身在一個UINavigationController - espessially裝在容器中視圖控制器時
我有一個導航控制器層次結構的正確用法的一些問題。
每UIViewController
有一個屬性self.navigationController
但並不是每一個視圖控制器從導航控制器呈現 - 爲此,物業可能是零。
更是如此 -
有些視圖控制器希望能夠做到:
[self.navigationController presentViewController:nextViewController];
,但如果它本身不是一個導航控制器層次載,那表情就什麼也不做。
所以實習生,如果它是嵌入在導航控制器的視圖控制器可以測試:
if (self.navigationController == nil)
{
// create a UINavigationController with a root view controller - the next view controller
UINavigationController *nav = [UINavigationController alloc] initWithRootViewController:nextViewController];
[self presentViewController:nav];
}
但可能打敗目的 - 因爲如果呈現視圖控制器不是導航控制器 - 爲什麼會下一個視圖控制器必須位於導航控制器中。爲什麼當前視圖控制器不會這樣做:
[self presentViewController:nextViewController];
並跳過導航控制器的創建?
在這些精確的線 - 這是我現在所面臨的另一個問題 -
有些視圖控制器希望從UINavigationController
提交 -
因爲他們設定導航項目 - 在所提供的工具欄項目,職稱等。導航控制器欄。
如果出於某種原因他們self.navigationController == nil
- 他們怎麼能「把自己」導航控制器內,以確保它們可以訪問這些預期因素???
關於導航控制器問題容器內部視圖控制器:
如果你看看股票的iOS音樂應用程序 - 你可以看到什麼似乎是嵌入在UIViewNavigationController
內UITabBarController
- 每個標籤是一個獨立的視圖控制器 - 每個人都可以「推」和「彈出」視圖控制器本身。
我需要實現類似的效果(但使用不同的佈局),所以我創建了一個容器視圖控制器,裏面有UITabBar
視圖。
我然後創建的容器視圖控制器
該容器是其中每個子視圖 - 控制器的觀點是在呈現內部呈現container
圖。(這些是「父視圖控制器」的'子視圖控制器的) - 這是一個繞口令,我爲此道歉。
標籤欄切換 - 父視圖控制器交換該容器中的可見視圖控制器。
現在每個視圖控制器是非常通用的 - 他們沒有自己的遏制的想法,但希望以設置標題,以具有設定一個UINavigationController
可變(非空) - 按鈕 - 導航項目等
通用黑盒視圖控制器如何在導航控制器中「呈現」自身(嵌入其自身)
容器視圖控制器如何設置子視圖控制器的navigationController
屬性?