我有一个带有UITableView
的viewController,我可以通过滑动来编辑(删除)这些行 - 就像在Mail应用程序中一样。除此之外,我用这种方法做到了:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
但是,如果我显示了删除按钮,同时我使用了UINavigationController
的后退导航,即当我popViewControllerAnimated:
时,应用程序崩溃并显示以下消息:
[ViewController tableView:canEditRowAtIndexPath:]:发送到解除分配的实例0xaae64d0的消息
如何解决此问题?
答案 0 :(得分:75)
在视图控制器的dealloc
方法中,将表格视图的editing
属性设置为NO
。
答案 1 :(得分:42)
我遇到了同样的问题,但我使用的是ARC而且我不想在dealloc方法中捣乱。在viewWillDisappear中执行此操作足以阻止崩溃。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[table setEditing:NO];
}
答案 2 :(得分:0)
使用
tableview.delegate = nall in dealloc()
使用
的tableView =零
答案 3 :(得分:0)
我知道这是一篇旧帖子,但我最近遇到了这个问题,并且认为其他人可能会从我发现的内容中受益:我使用Xcode 9和iOS 11,并且我正在使用使用SearchController的新方法。如果我在搜索时单击系统后退按钮,我在tableView(_:canEditRowAt indexPath :)上得到了致命的信息。将setEditing更改为false并没有解决我的问题。问题是我在canEditRowAt覆盖中返回true / false,具体取决于我的数据源是否有记录,但是当我搜索时,我有一个不同的数据源(过滤数组)。一旦我检查了正确的数据源,后退按钮就可以工作。