2012-12-10 31 views
0

我創建了一個視圖控制器,然後創建一個導航控制器:UINavigationController initWithRootVC:如何強制加載VC?

initWithRootViewController: 

後來我發現,它調用pushViewController:animated:,因爲我用我自己的UINavigationController子類,我覆蓋pushViewController:animated:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    [super pushViewController:viewController animated:animated]; 
    // do something with the VC 
} 

問題出在

[super pushViewController:viewController animated:animated]; 

viewController.isViewLoaded是NO,所以我實際上無法做到我想要的,有沒有辦法強制VC加載,當它用作導航控制器的根VC時?

謝謝!

編輯,下面是代碼:

MyViewController *vc = [[MyViewController alloc] initWithNib:@"" bundle:nil]; 
MyNavController *nav = [[MyNavController alloc] initWithRootViewController:vc]; 

self.revealViewController.frontViewController = nav; 
+0

你不應該重寫pushViewController:動畫:在你的子類。我不確定你在做什麼錯誤,但是你不需要做任何事情來獲得根視圖控制器的視圖加載 - 它應該自動加載。請將代碼發佈到創建根視圖控制器和導航控制器的地方。 – rdelmar

+0

你期望看到什麼樣的觀點? vc只會在加載時顯示一個空白屏幕,因爲您沒有在其視圖中添加任何內容。順便說一句,沒有一種叫做initWithNib的方法:bundle:,它的initWithNibName:bundle – rdelmar

回答

1
Access view before pushing viewController. 

[viewController view];//this will load your view 
[super pushViewController:viewController animated:animated]; 
+0

+1 [viewController view]!如此簡單,如此明顯,我怎麼會錯過它? – tassinari