2011-10-11 23 views
3

我顯然失去了一些東西......的iOS:如何獲取指向導航控制器

在我的iOS應用程序,我把一個UIViewController到導航控制器:

MyViewController *mvc = [[MyViewController alloc] initWithNibName:@"MyViewController"]; 
[self.navigationController mvc animated:YES]; 

MyViewController顯示細膩,我可以看到並使用navigationBar,但是當我嘗試從我的視圖控制器中獲取指向導航控制器的指針時,我得到一個零結果。

UINavigationController *nav = [self navigationController]; 
if (!nav) { 
    NSLog(@"no nav"); 
} 

我一整天都在打我的頭,但看不到我做錯了什麼。我在Xcode中沒有任何警告或錯誤。我完全錯過了什麼嗎?

TIA:約翰

回答

9

navigationController將不能正確的viewDidLoad設置。你必須在viewDidAppear或稍後的階段檢查它。你打電話給[self navigationController]的哪種方法?

原因是當調用viewDidLoad時,UINavigationController仍在處理pushViewController:animated:方法。它似乎在之後設置navigationController屬性它初始化控制器的view。我不記得該物業是否在viewWillAppear運行時間設置,但它肯定應該由viewDidAppear設置。

+0

啊!當然。我敢打賭,這是問題所在。我在初始化程序中檢查它,這太早了。咄!謝謝你挽救我可憐的頭! – John

0
id rootViewController = [[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0] nextResponder];