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

时间:2011-10-11 22:53:48

标签: ios uinavigationcontroller

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

在我的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:约翰

2 个答案:

答案 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];