嵌入导航控制器后应用程序崩溃

Posted

技术标签:

【中文标题】嵌入导航控制器后应用程序崩溃【英文标题】:App crashes after embedding in navigation controller 【发布时间】:2014-02-19 15:50:32 【问题描述】:

!(http://s10.postimg.org/8gy1q2rrt/question.png) 当我到达右侧的最后一个视图控制器并按 BACK 按钮时,我返回第一个控制器而不是第二个控制器,我想返回 1 步。 (1>2>3)。所以我在它们之间添加了导航控制器(不知道为什么),当我想去第三个视图控制器时应用程序崩溃了。所有的segues都是PUSH。 这是按钮 #1 代码。 @"tevzeulimenu" 是标签栏控制器的 ID。

- (IBAction)goMenu1:(id)sender 
UITabBarController *firstView = [self.storyboard     
instantiateViewControllerWithIdentifier:@"tevzeulimenu"];
[self.navigationController pushViewController:firstView animated:YES];
 

这是 segue 的代码:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

if ([[segue identifier] isEqualToString:@"show1"])

    DetailMenuViewController *detailViewController =
    [segue destinationViewController];

    NSIndexPath *myIndexPath = [self.tab1
                                indexPathForSelectedRow];

    long row = [myIndexPath row];

    detailViewController.detailMenu= @[_menu1Images[row],
                                       _menu1Names[row],
                                        _menu1Prices[row],
                                       _menu1Text[row]];


帮助解决这个问题。当按下返回而不是第一个时,我想从右侧的第三个视图控制器(最后一个)返回到第二个。

【问题讨论】:

错误信息是什么? 无法识别的选择器发送到实例 0x8aa1170' 【参考方案1】:

你应该使用:

- (IBAction)goMenu1:(id)sender 
    [self performSegueWithIdentifier:@"show1" sender:self];
 

当然,您必须在情节提要中添加Segue,标识符为:show1

希望这会有所帮助。

编辑:在上下文中。

【讨论】:

嗨,谢谢你的回复,你能编辑我的代码吗?你已经知道我是新手了。 好的,我是 *** 的新手,但我认为您只需要验证我的答案即可。 它不起作用,因为 a) 我在错误的地方使用了它 b) 它不正确,所以请你编辑我的代码。我用你的代码替换了 if 语句,它没有帮助。 点击按钮时崩溃 您必须在您的storyboard 中添加一个Segue,其标识符为:show1

以上是关于嵌入导航控制器后应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

尝试在导航控制器中嵌入视图控制器时 Xcode6-Beta 崩溃

目标 C - 导航栏错误 + 崩溃怪异

Swift:以编程方式嵌入标签栏控制器后,导航栏消失

在执行功能时单击导航控制器上的后退按钮时应用程序崩溃

在接收推送通知时,点击事件应用程序在导航后崩溃

如果我使用 prepareForSegue 传递数据,则无法嵌入导航控制器