iOS:如何获取指向导航控制器的指针

Joh*_*ohn 3 uinavigationcontroller ios

我显然错过了一些东西......

在我的iOS应用程序中,我将UIViewController推送到导航控制器:

MyViewController *mvc = [[MyViewController alloc] initWithNibName:@"MyViewController"];
[self.navigationController mvc animated:YES];
Run Code Online (Sandbox Code Playgroud)

MyViewController显示正常,我可以看到并使用navigationBar,但当我尝试从视图控制器中获取指针返回导航控制器时,我得到一个零结果.

UINavigationController *nav = [self navigationController];
if (!nav) {
    NSLog(@"no nav");
}
Run Code Online (Sandbox Code Playgroud)

我整天都在反对这一点,但却看不出我做错了什么.我在Xcode中没有任何警告或错误.我完全错过了什么吗?

TIA:约翰

dar*_*s0n 9

navigationController不会被正确设定viewDidLoad.你必须检查它viewDidAppear或在稍后阶段.你打算[self navigationController]采用哪种方法?

原因是当viewDidLoad调用时,UINavigationController仍在处理该pushViewController:animated:方法.它似乎初始化控制器之后设置navigationController属性.我不记得该属性是否由时间运行设置,但它应该由它设置.viewviewWillAppearviewDidAppear