2010-02-16 163 views
1

我剛纔意識到我的'root'viewController應該是UINavigationController。現在我想改變這是一個UINavigationController,而只是好奇我的最佳選擇是什麼。如果情況不同,我使用IB構建了這個視圖和所有其他視圖。什麼是將我的UIViewController更改爲UINavigationController的最好方法

我最擔心的是我將不得不做很多複製/粘貼和重新編碼才能讓所有的東西都正確,否則就像手動編輯我的控制器並將擴展名更改爲UINavigationController一樣簡單。

感謝

回答

6

您不會將現有視圖控制器轉換爲導航控制器。

即使UINavigationController是UIViewController的子類,它的任務是管理其他視圖控制器,而不是管理視圖本身。你不會把它們換成另一個。相反,您將UIViewControllers設置爲由nav控制。

要將導航添加到IB中的項目,請打開xib並拖動UINavigationController。然後將導航控制器的rootControlller屬性設置爲現有的UIViewController。

你完成了。

+0

它不是那麼容易! :)是rootController通過IB設置的東西? – willcodejavaforfood 2010-02-16 15:37:49

+0

不,我不明白我是如何將所有這些連接在一起的 – willcodejavaforfood 2010-02-16 15:57:17

+0

你如何連接這個,沒有rootController屬性? – marko 2011-02-10 13:37:23

1

您可以實例化一個平凡的不能-子類UINavigationController,並給它原來的UIViewController作爲它的根控制器,如:

YourRootViewController *rootViewController = [[YourRootViewController] initHoweverYouInitIt]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; 

,也許一個[rootViewController release];,這取決於你如何去管理內存。

+0

我真的沒有做任何初始化自己,這是所有的IB處理, XIB對不對?我將不得不在我的AppDelegate中手動執行所有這些操作? – willcodejavaforfood 2010-02-16 14:10:51

+0

沒錯。但這是要走的路。 – MrMage 2010-02-16 15:29:21

1

UINavigationController與UIViewController具有'is-a'關係,因此您應該可以在Interface Builder中更改其類類型,而無需進行其他更改。

+0

我目前沒有UINavigationController,所以你可以提供更多關於如何設置的細節? – willcodejavaforfood 2010-02-16 14:27:46

+0

在界面生成器中選擇您的視圖控制器,然後執行命令-4進入信息選項卡。最上面的設置是Class(當前UIViewController),嘗試在UINavigationController中輸入,而不是當前的內容。我已經成功完成了這個視圖,它應該也適用於視圖控制器。 – Winder 2010-02-16 14:43:28

+0

不,這不起作用。沒有ViewController只是一個視圖,文件的所有者和第一響應者 – willcodejavaforfood 2010-02-16 15:41:34

3

你也可以「嵌入」導航控制器通過IB選擇視圖控制器,然後選擇編輯 - >嵌入在 - >導航控制器

相關問題