我无法在viewControllers之间执行转换,因为navigationControllernil。我已经在navigationController的不同部分记录了class,但是到处都返回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中,我有一个viewController嵌入在navigationController中,然后从那里我想将push转换为同一viewController中的另一个storyboard

编辑
我得到这个工作:
 [self showViewController:viewController sender:self];

很可能是因为它不使用navigationController。它以modular的形式呈现,但它不是导航堆栈的一部分,这不是我想要的。很高兴知道,如果navigationController不为零,一切都会奏效。

最佳答案

我从导航控制器创建segue experienceDetails时重现了所描述的行为...这是解决方案

1)删除segue体验详细信息表单导航控制器

2)使用标识符Experience创建push segue从包含的视图控制器到详细信息视图控制器的详细信息

3)在视图控制器中从self执行如下命令

[self performSegueWithIdentifier:@"experienceDetails" sender:self];

关于ios - 由于navigationController为nil,因此无法推送viewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59905178/

10-13 04:00