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