我之前从未遇到过这个问题,也没有听说过这个问题。我正在为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内部的方法调用。它似乎没有像异常一样抛出错误?
答案 0 :(得分:3)
仅供参考,我遇到了同样的问题,我在另一个SO帖子上找到答案:iOS - UISplitViewController with storyboard - multiple master views and multiple detail views
基本上,在制作segue时需要再次设置uisplitviewcontroller委托。希望这可以帮助将来的某个人。