UITableView删除并重新加载单元格

0xS*_*ina 5 cocoa-touch objective-c uitableview ios

我在UITableView中删除了一些行,如下所示:

[tableView deleteRowsAtIndexPaths:toDelete withRowAnimation:UITableViewRowAnimationAutomatic];
Run Code Online (Sandbox Code Playgroud)

这为删除操作添加了一个漂亮的动画.

但是,删除后我需要更新所有当前可见的行.调用

[tableView reloadData];
Run Code Online (Sandbox Code Playgroud)

在第一次调用工作之后,但很好的动画效果消失了.有什么更好的方法呢?即,为删除操作设置动画,并更新所有当前可见的行?谢谢!

我需要这样做的原因是因为每个单元格都包含一个"复选框".我的视图控制器是复选框的委托,每个复选框都有一个与之关联的NSIndexPath.当切换复选框时,会调用委托告诉它我们切换为x索引路径.现在,如果删除某些行,则需要更新索引路径.这就是为什么我需要重新加载所有内容,以便每个复选框知道它所属的位置.

Chr*_*hey 0

注意: 正如评论中所述,这个答案很可能行不通。如果不被接受,我就会删除它。

我不能 100% 确定这是最好的方法,但它有一些令人愉快的干净之处。我们可以reloadData在修改底层模型后包装一个常规的 UIView 动画块:

// if self.people is a mutable array
[self.people removeObjectAtIndex:13];

[UIView animateWithDuration:0.5 animations:^{
  [self.tableView reloadData];
}];
Run Code Online (Sandbox Code Playgroud)