导航控制器始终为零

时间:2014-02-20 12:32:10

标签: ios uiviewcontroller uinavigationcontroller uistoryboard

我提出UIViewController喜欢:

UIStoryboard *storyboard  = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

PhotoViewController *resultVC = [storyboard instantiateViewControllerWithIdentifier:NSStringFromClass([PhotoViewController class])];
[self.navigationController presentViewController:resultVC animated:YES completion:^{}];

我已登录控制台,结果是:

po self.navigationController
<UINavigationController: 0x9c3e920>

但是当我在PhotoViewController课程时,我已经记录了控制台,结果是:

po self.navigationController
nil

这里没有。我不知道为什么会这样。我也有这个,但它总是:

[self presentViewController:resultVC animated:YES completion:^{}];

3 个答案:

答案 0 :(得分:6)

是的,它是零。 UIViewController.navigationController属性仅在推送ViewController时才会设置,而不会显示。 一个不那么优雅的解决方案是你在呈现它之前做一个全局引用(比如将引用放在一个单例中)到NavigationController,然后你可以从UIViewController内部读取它。 / p>

答案 1 :(得分:0)

了解如何使用navigationController。

替换下一个代码:[self.navigationController presentViewController:resultVC animated:YES completion:^{}];[self.navigationController pushViewController:resultVC animated:YES];

答案 2 :(得分:0)

我生成私有navigationController(这里是导航),然后分配到主窗口,以下是代码:

self.nav = [[UINavigationController alloc] initWithRootViewController:self];

[[[UIApplication sharedApplication] delegate] window] .rootViewController = self.nav;

您可以使用私人view controller

推送navigationController

[self.nav pushViewController:vc animated:YES];

对我有用!

但您必须导出属性nav以供下一个或子视图控制器使用