我显然错过了一些东西......
在我的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:约翰
答案 0 :(得分:9)
navigationController
上的viewDidLoad
将无法正确设置。您必须在viewDidAppear
或稍后阶段进行检查。您在{?1}}中调用了哪种方法?
原因是,在调用[self navigationController]
时,viewDidLoad
仍在处理UINavigationController
方法。在初始化控制器的pushViewController:animated:
之后,似乎设置了navigationController
属性。我不记得该属性是否在view
运行的时间设置,但它绝对应该由viewWillAppear
设置。
答案 1 :(得分:0)
id rootViewController = [[[[[UIApplication sharedApplication] keyWindow] subviews] objectAtIndex:0] nextResponder];