我正在开发一个概念,使用户能够在重新排序UITableView的过程中“抛出”单元格(您可以查看Youtube上的简短演示并从{{3}克隆我的回购})我有一个问题,导致我的应用程序崩溃...在第一次投掷之后没有立即 - 它甚至可以在快速挥动之后(在iPhone 4上测试)。
我的工作是:
- tableView: targetIndexPathForMoveFromRowAtIndexPath: toProposedIndexPath:
我正在根据此方法调用之间的时间变化和单元格proposedDestinationIndexPath
的更改并设置单元格的标记来更改origin.y
时考虑计算出的速度移动。reloadData
中- tableView: didEndDisplayingCell: forRowAtIndexPath:
并取消设置isMoving
标记isMoving
标志应用程序在投掷开始(- tableView: targetIndexPathForMoveFromRowAtIndexPath: toProposedIndexPath:
)和降落到目的地(- tableView:moveRowAtIndexPath: toIndexPath:
)之间的某处崩溃。
我怀疑它是因为我在某种程度上扰乱了表视图的内部结构,但是并不真正理解究竟发生了什么,以及如何解决它。原因是:
*由于未捕获的异常'NSRangeException'而终止应用程序,原因:'* - [__ NSArrayM objectAtIndex:]:索引9超出边界[0 .. 8]'
事实上,在崩溃时我们可能有11个可见的单元格,但目前只有8个可见(附截图):
如何使其稳定?