tableView:canEditRowAtIndexPath:弹出viewController时崩溃

时间:2013-10-07 16:55:02

标签: ios objective-c uitableview

我有一个带有UITableView的viewController,我可以通过滑动来编辑(删除)这些行 - 就像在Mail应用程序中一样。除此之外,我用这种方法做到了:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {

    return YES;
}

但是,如果我显示了删除按钮,同时我使用了UINavigationController的后退导航,即当我popViewControllerAnimated:时,应用程序崩溃并显示以下消息:

[ViewController tableView:canEditRowAtIndexPath:]:发送到解除分配的实例0xaae64d0的消息

如何解决此问题?

4 个答案:

答案 0 :(得分:75)

在视图控制器的dealloc方法中,将表格视图的editing属性设置为NO

答案 1 :(得分:42)

我遇到了同样的问题,但我使用的是ARC而且我不想在dealloc方法中捣乱。在viewWillDisappear中执行此操作足以阻止崩溃。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [table setEditing:NO];
}

答案 2 :(得分:0)

  1. 使用

    tableview.delegate = nall in dealloc()

  2. 使用

    的tableView =零

答案 3 :(得分:0)

我知道这是一篇旧帖子,但我最近遇到了这个问题,并且认为其他人可能会从我发现的内容中受益:我使用Xcode 9和iOS 11,并且我正在使用使用SearchController的新方法。如果我在搜索时单击系统后退按钮,我在tableView(_:canEditRowAt indexPath :)上得到了致命的信息。将setEditing更改为false并没有解决我的问题。问题是我在canEditRowAt覆盖中返回true / false,具体取决于我的数据源是否有记录,但是当我搜索时,我有一个不同的数据源(过滤数组)。一旦我检查了正确的数据源,后退按钮就可以工作。