【发布时间】:2011-12-13 06:50:52
【问题描述】:
iOS 5 终于在UITableView 中添加了moveRowAtIndexPath:toIndexPath: 方法。问题是,调用它只会移动行,它不会更新/重绘它。这样做的唯一方法似乎是找到单元格并直接调用 setNeedsDisplay。但这很棘手,因为您永远不知道单元格是否已经移动。
我也不能调用 reloadRowsAtIndexPaths:,因为我不允许在同一 beginUpdates-endUpdates 块内的单行上应用 2 个动画。
我可以想到一些解决方法,比如将整个东西分成 2 个动画块。但我想知道我是否遗漏了什么,因为整个行为对我来说似乎很奇怪。
【问题讨论】:
-
不确定,但请尝试查看
beginUpdates和endUpdates。您也许可以跟踪正在移动的 indexPath,并在endUpdates中对单元格进行适当的更改(如果已移动)。 -
在 endUpdates 之后调用任何新的行动画函数会取消该单元格的待处理动画。换句话说,单元格确实被重绘了,但移动动画不再发生。调用
setNeedsDisplay也有类似的效果。 -
提交了一个错误报告:openradar.appspot.com/10457435
标签: iphone uitableview ios5