Calling a seque causes crash
很多人都有类似的问题,我读过他们的解决方案,但我仍然不能让我的工作。
我连接了这两个视图。我不能显示连接,因为我没有发布图片的声誉。我称之为续集识别游戏。
然后我把续集叫做:
1 2 3 4
| if(self.lives == 0)
{
[self performSegueWithIdentifier: @"GameOver" sender:self];
} |
此时应用程序崩溃。我做错了什么?
"libc++abi.dylib:以nsException类型的未捕获异常终止"
- 欢迎使用StackOverflow。发布完整错误。
- 谢谢。2014-07-27 01:39:10.277内存[2604:60B]***由于未捕获的异常"nsgenericException"而终止应用程序,原因:"找不到Segue"Gameover"的导航控制器"。只有当源控制器由uinavigationcontroller的一个实例管理时,才能使用push segues。'我认为这与它有关。
- 您需要在故事板中将Segue的演示风格更改为模态。
- 调用GameOversegue的视图控制器未嵌入导航控制器中。在Interface Builder中选择视图控制器,然后选择编辑器菜单>嵌入>导航控制器。Push Segues只能与导航控制器一起使用。
- 阿卡什,就是这样!
查看错误日志,我认为您的应用程序中没有导航控制器。你的世故是推动。要推送新的视图控制器,在执行推送segue操作之前必须先安装uinavigationcontroller。
要解决此问题,请在情节提要中选择视图控制器->单击编辑器->嵌入->导航控制器。这将为您的应用程序添加导航控制器。现在,您可以成功执行推送和弹出操作。
您需要将视图控制器嵌入到UINavigationController中,因为没有导航控制器不能使用push segues。有关说明,请参见下面的屏幕截图:
- 我不想有导航控制器。阿卡什告诉我改成莫代尔是对的。不过谢谢你帮我理解
- 要使用Push Segues,您必须有一个导航控制器。你不想要导航控制器有什么原因吗?如果这是您的问题,您可以删除视图控制器之间的动画。
- 不,我不想在续集之后出现在我的视野中。当您切换到模式时,它不会自动将导航控制器栏放在顶部。
- 您可以在您所选的视图控制器的viewDidLoad中使用它:[self.navigationController setNavigationBarHidden:TRUE animated:FALSE];,它将隐藏导航栏。
- 使它成为模态有问题吗?我不想争论,只是想理解。
- 我不这么认为,我想这取决于你想做什么。我以前从未尝试过模态方法,所以你的方法可能更好。
- 好吧,好吧,我暂时不谈。但是谢谢你给我看其他的选择
- 没问题,谢谢你提出来。
阿卡什回答了我的问题。需要将续集样式切换为"modal"。根据duci9y,push"样式需要嵌入导航控制器或标签栏控制器。
在这里,我找到了模态和推送segue之间差异的答案。
在故事板中,莫代尔和普什塞格有什么区别?
莫代尔从当前视图显示新视图。
Push在两个视图之间放置一个控制器。
感谢大家的投入。我尽量让答案简单些,这样人们就能很快得到答案。