【发布时间】:2012-09-02 16:22:05
【问题描述】:
我正在像这样删除 UITableView 中的一些行:
[tableView deleteRowsAtIndexPaths:toDelete withRowAnimation:UITableViewRowAnimationAutomatic];
这为删除操作添加了一个漂亮的动画。
但是,删除后我需要更新所有当前可见的行。调用
[tableView reloadData];
第一次调用后就可以了,但是漂亮的动画效果就消失了。有什么更好的方法来做到这一点?即,为删除操作设置动画,并更新所有当前可见的行? 谢谢!
我需要这样做的原因是因为每个单元格都包含一个“复选框”。我的视图控制器是复选框的代表,每个复选框都有一个与之关联的 NSIndexPath。当复选框被切换时,会调用委托,告诉它我们切换了 x 索引路径。现在,如果删除了某些行,则需要更新索引路径。这就是为什么我需要重新加载所有内容,以便每个复选框都知道它所属的位置。
【问题讨论】:
-
为什么删除后需要强制重新加载? (您不能在调用 deleteRowsAtIndexPaths 之前从数据源中删除该行,还是发生了更重要的事情?)
-
我不记得它是否有效,但您是否尝试过进行模型级删除,然后简单地将
reloadData包装在[UIView animateWithDuration...]块中? -
@middaparka 我会更新我的问题,解释为什么我需要这样做。
-
@ctrahey 这是正确的方法吗?
-
@ctrahey 使用动画块有效,但在持续时间内传递的正确值是多少?
标签: objective-c ios cocoa-touch uitableview