performSegueWithIdentifier随机崩溃

时间:2012-06-25 16:17:22

标签: ios ipad xcode4.3 segue master-detail

我之前从未遇到过这个问题,也没有听说过这个问题。我正在为ipad使用Master-Detail应用程序(splitview)。我有一个动态的tableview for my MVC,我正在尝试将每个单元格转换为自定义视图控制器。

目前我的桌子上只有两件物品。当程序启动时,我可以选择它们中的任何一个,它将转换到正确的视图控制器而没有任何问题。但大多数时候,当我第二次点击某个程序时程序崩溃了。有时需要四到五次点击,但最终总是会崩溃。

以下是代码段:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *segueName = [self.tableObjects objectAtIndex:indexPath.row];
    [self performSegueWithIdentifier:segueName sender:self];
}

tableObjects是我用来创建表项的NSArray。如果我在segue调用之前抛出一个print语句,它会打印正确的segue名称。

实际的performSegueWithIdentifier调用总是抛出错误。我用调试器检查了它。我不断得到的例外是: EXC_BAD_ACCESS

这两个segue最初都是有效的,所以我不认为这是一个问题。这种方法有时会被随机调用吗?有没有办法仔细检查方法调用是否安全?我是否需要覆盖performSegueWithIdentifier并在那里做一些事情?

我试图把它变成一个尝试捕捉:

@try {
    [self performSegueWithIdentifier:segueName sender:self];
}
@catch (NSException *exception) {
    NSLog(@"%@", exception);
}
@finally {
    NSLog(@"finally");
}

它仍然指向@try内部的方法调用。它似乎没有像异常一样抛出错误?

1 个答案:

答案 0 :(得分:3)

仅供参考,我遇到了同样的问题,我在另一个SO帖子上找到答案:iOS - UISplitViewController with storyboard - multiple master views and multiple detail views

基本上,在制作segue时需要再次设置uisplitviewcontroller委托。希望这可以帮助将来的某个人。