Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:如何获取指向导航控制器的指针_Ios_Uinavigationcontroller - Fatal编程技术网

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

iOS:如何获取指向导航控制器的指针,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我显然错过了一些东西 在iOS应用程序中,我将UIViewController推送到导航控制器上: MyViewController *mvc = [[MyViewController alloc] initWithNibName:@"MyViewController"]; [self.navigationController mvc animated:YES]; MyViewController显示良好,我可以查看和使用navigationBar,但当我尝试从视图控制器中获取指向导航控制器的

我显然错过了一些东西

在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:john

导航控制器无法在
viewDidLoad
上正确设置。您必须在
viewdide
或稍后的某个阶段将其选中。您正在调用中的
[self-navigationController]
的哪个方法


原因是调用
viewDidLoad
时,
UINavigationController
仍在处理
pushViewController:animated:
方法。在初始化控制器的
视图
后,它似乎会设置
导航控制器
属性。我记不起该属性是否是在
viewwillbeen
运行时设置的,但它肯定应该由
viewdidebeen
设置!当然我打赌这就是问题所在。我在初始值设定项中检查它,这太早了。哼!谢谢你救了我可怜的脑袋!
id rootViewController = [[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0] nextResponder];