无法推送 viewController,因为 navigationController 为 nil
Posted
技术标签:
【中文标题】无法推送 viewController,因为 navigationController 为 nil【英文标题】:Can't push viewController because navigationController is nil 【发布时间】:2020-05-11 07:06:56 【问题描述】:我无法在viewControllers
之间执行转换,因为navigationController
是nil
。我在class
的不同部分记录了navigationController
,但它到处都返回nil。在storyboard
中,viewController
嵌入在navigationController
中。我已经检查了SO
上的其他线程有同样的问题,但没有一个答案对我有帮助,甚至没有真正意义。
Can't push because self.navigationController is nil
navigationController is nil,when push the viewcontroller
为什么是零?我该如何解决这个问题?还会返回一条错误消息:
我都尝试过使用segue
:
[self.navigationController performSegueWithIdentifier:@"experienceDetails" sender:self];
还有推:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Inspiration" bundle:nil];
ExperienceViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"experience"];
[self.navigationController pushViewController:viewController animated:NO];
使用push
没有任何反应,但会产生错误消息:
不允许在解除分配时尝试加载视图控制器的视图,这可能会导致未定义的行为
我也曾针对该错误寻找解决方案,但似乎没有明确具体的解决方法。同样,我阅读并尝试过的那些建议没有奏效。
我真的很茫然。这么简单的事情,但我什至不明白的事情阻碍了我。
编辑
如果有帮助,我有一个tab bar
和一个item
我有一个嵌入在navigationController
中的viewController
,从那里我想push
到另一个viewController
在同一个storyboard
.
编辑 我得到了这个工作:
[self showViewController:viewController sender:self];
很可能是因为它不使用navigationController
。它虽然显示为modular
,但不是导航堆栈的一部分,这不是我想要的。很高兴知道如果navigationController
不是 nil,一切都会奏效。
【问题讨论】:
【参考方案1】:当从导航控制器创建 segue experienceDetails 时,我重现了所描述的行为......这是解决方案
1) 删除 segue experienceDetails 表单导航控制器
2) 创建 push
segue 标识符 experienceDetails 从包含的视图控制器到详细视图控制器
3) 在视图控制器中从self
执行segue,如下所示
[self performSegueWithIdentifier:@"experienceDetails" sender:self];
【讨论】:
很好,它成功了,谢谢。仍然需要弄清楚为什么 navController 是 nil,因为我希望这个 vc 在堆栈中。以上是关于无法推送 viewController,因为 navigationController 为 nil的主要内容,如果未能解决你的问题,请参考以下文章
使用“模态推送”到 viewController 并且无法在顶部添加 UINavigationItem-(Controller, Bar)
当应用程序被终止状态时,点击推送通知后无法导航到 ViewController
在 iOS 10 下使用 FCM 在前台单击推送通知后无法导航到特定的 viewController