导航控制器在第二个视图控制器中为零

Posted

技术标签:

【中文标题】导航控制器在第二个视图控制器中为零【英文标题】:Navigation controller is nil in the second view controller 【发布时间】:2015-11-23 19:45:19 【问题描述】:

所以我设置了 AppDelegate 来加载具有导航控制器的根视图 vc:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
SecondViewController *vc = [[SecondViewController alloc] init];
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:vc];
[self.window makeKeyAndVisible];
return YES;

在我的 SecondViewController 中,我有一个方法可以调用 push 来呈现第三个视图控制器:

ThirdViewController *thirdVC = [[ThirdViewController alloc]init];
[self.navigationController pushViewController: thirdVC animated:YES];

虽然这不起作用。仔细检查后,SecondViewController 上的 self.navigationController 属性为零。我在 AppDelegate 上是否遗漏了一些东西来使这个非零?

【问题讨论】:

尝试单独设置导航控制器并用视图控制器初始化,并使其成为根视图! 【参考方案1】:

尝试这个,因为我遇到了同样的问题,但我通过在项目的自定义类标题下设置相同的类名和 Storyboard ID 名称来解决它。

registerViewController *regVC = [self.storyboard instantiateViewControllerWithIdentifier:@"registerViewController"]; [self.navigationController pushViewController:regVC 动画:YES];

【讨论】:

【参考方案2】:

试试这个:

SecondViewController *vc = [[SecondViewController alloc] init]; 
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];

无需在应用委托中将根视图控制器设为 nil。

【讨论】:

我已经尝试过了,但它不起作用。我的意思是 self.navigationController 似乎为零,不知道为什么。 您尝试以编程方式将导航控制器添加到 VC,或者您的 VC 在情节提要中有导航控制器吗?@user1686342 我没有情节提要,我已经使用 XIB 以编程方式添加了 嗯,我已经在上面分享了 你在哪里调用第二个 VC 中的推送代码?

以上是关于导航控制器在第二个视图控制器中为零的主要内容,如果未能解决你的问题,请参考以下文章

导航返回时导航控制器和视图未更新

在不使用导航控制器的情况下转到第二个视图时如何显示动画?

iOS 为啥在这种情况下 backBarButtonItem 为零

在第二个标签栏项目中不显示搜索控制器的键盘

稍后在导航控制器的层次结构中抓取视图

如何设置导航栏的后退项