我有一个表格,用户可以用两种不同的方式对其进行排序。当用户在这两种排序模式之间切换时,我希望重新排序是动画的。虽然 UITableView 的方法为插入、删除和重新加载行提供了动画帮助,但我没有看到任何可以让我为行移动设置动画的东西。
我错过了什么吗?
假设我不是,有没有人有关于如何执行此操作的示例代码?
谢谢。
最佳答案
我知道这是一个较旧的问题,但我遇到了同样的问题并认为我找到了解决方案,所以我想我会分享以防其他人在这里找到同样的问题。我也不确定它的解决方案有多棒,但它似乎对我有用。
我的 TableView 从名为 _objects
的数组中获取数据。在我的排序方法中,我首先创建另一个数组,它是数据数组的精确副本:
NSArray *objectsBeforeSort = [NSArray arrayWithArray:_objects];
然后我使用我已经创建的排序描述符对我的数据数组 _objects
进行排序。在我的数组上调用适当的排序方法后,我使用它来动画表更新:
[self.tableView beginUpdates];
for (int i = 0; i < _objects.count; i++)
{
// newRow will get the new row of an object. i is the old row.
int newRow = [_objects indexOfObject:objectsBeforeSort[i]];
[self.tableView moveRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0] toIndexPath:[NSIndexPath indexPathForRow:newRow inSection:0]];
}
[self.tableView endUpdates];
我还没有广泛测试这段代码,但它似乎给出了预期的结果。
关于ios - UITableView 动画行在排序时重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5071380/