我提出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:^{}];
答案 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
以供下一个或子视图控制器使用