reloadRowsAtIndexPaths

时间:2015-10-05 21:26:48

标签: ios uitableview swift2

在我的应用中,当像这样重新加载tableview单元时

let editItemView = view.viewWithTag(12) as! UITableView
let indexPath = editItemView.indexPathForRowAtPoint(sender.convertPoint(CGPointZero, toView: editItemView))
editItemView.reloadRowsAtIndexPaths([indexPath!], withRowAnimation: UITableViewRowAnimation.Automatic)

并且新的高度小于旧的,有时(特别是当细胞位于视图的底部时),细胞的旧内容的一部分停留在覆盖下面的细胞的屏幕上。所有单元格高度都是正确的,当损坏的单元格(@新大小)移出视图时,它就会消失。但是, reloadData 按预期工作。有人知道如何防止这种情况吗?

2 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案:代码是在 reloadRowsAtIndexPaths 之前从同一 UITableView 删除按钮:

F

reloadRowsAtIndexPaths 之后放置此代码会结束tableview的不可预测的行为。

答案 1 :(得分:0)

您是否尝试过包围电话?

editItemView.beginUpdates()
editItemView.reloadRowsAtIndexPaths([indexPath!], withRowAnimation: UITableViewRowAnimation.Automatic)
editItemView.endUpdates()