tableView:canEditRowAtIndexPath:弹出viewController时崩溃

art*_*ras 40 objective-c uitableview ios

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

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

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

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

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

我该如何解决这个问题?

Guy*_*gus 75

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

  • 这可行,但它只在iOS7中开始发生.知道为什么吗? (6认同)

Nat*_*abe 42

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

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [table setEditing:NO];
}
Run Code Online (Sandbox Code Playgroud)

  • 如果你提出其他的vcs等,这种方法有时会引起奇怪的行为,所以我会使用dealloc方法. (4认同)