由于navigationController为nil,无法推送viewController

问题描述 投票:0回答:1

我无法在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没有任何反应,但是会产生错误消息:

不允许在尝试分配视图控制器时加载视图控制器的视图,这可能导致未定义的行为

我也在寻找该错误的解决方案,但是对于如何解决该问题似乎没有明确而具体的答案。同样,我阅读并尝试过的那些建议没有用。

我真的很茫然。这样的事情很简单,但是我什至不了解我的事情。

EDIT如果有帮助,我有一个tab bar,在一个item中有一个嵌入在viewController中的navigationController,然后从那里我想push到同一viewController中的另一个storyboard

EDIT我得到了这个工作:

 [self showViewController:viewController sender:self];

很有可能是因为它不使用navigationController。它表示为modular,但它不是导航堆栈的一部分,这不是我想要的。很高兴知道,如果navigationController不为零,那么一切都会起作用。

ios objective-c uiviewcontroller segue pushviewcontroller
1个回答
0
投票
experienceDetails时再现了所描述的行为,这是解决方法

1)已删除的segue experienceDetails表单导航控制器

2)创建了带有标识符experienceDetailspush序列,从包含的视图控制器到详细视图控制器

self进行如下检测

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

© www.soinside.com 2019 - 2024. All rights reserved.