无需重新加载即可更新UITableViewCell

时间:2011-04-07 07:22:59

标签: iphone uitableview

所以这是我的情况:

我有一个UITableView,其中每个单元格都有一些按钮 在cellForRowAtIndexPath中我设置了行的索引路径,所以当单击a按钮时,我知道单击了哪一行。
其中一个按钮是删除按钮,按下时我会删除背景数据并从表格中删除该行。

我遇到的问题是,在删除行之后,其他行的indexPath不正确,因为其他行尚未重绘。我可以找到重绘表的唯一方法是调用重新加载但这会弄乱动画 我认为这种问题必须先解决。有没有人对如何解决这个问题有任何建议?如果有更好的方法,我可以改变设计按钮的方式。

4 个答案:

答案 0 :(得分:9)

认为你需要使用这个......

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

Apple reference!

答案 1 :(得分:3)

通过开始和结束这样的更新,您应该能够在没有完全重新加载的情况下重绘tableview:

[tableView beginUpdates];
[tableView endUpdates];

答案 2 :(得分:2)

调用方法: - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

答案 3 :(得分:1)

最好不要使用按钮存储indexPath。在按钮操作处理程序(它是您的单元子类或viewController中的方法)中,您可以标识该单元格,然后使用-indexPathForCell:确定indexPath。