UITableView动画在排序时重新排序

Gre*_*tic 16 animation uitableview ios

我有一个表,用户可以用两种不同的方式排序.当用户在这两种排序模式之间切换时,我希望重新排序为动画.虽然UITableView的方法提供了插入,删除和重新加载行的动画帮助,但我没有看到任何可以让我为行动画制作动画的内容.

我错过了什么吗?

假设我不是,有没有人有关于如何做到这一点的示例代码?

谢谢.

小智 34

我知道这是一个较老的问题,但我遇到了同样的问题,并认为我找到了一个解决方案,所以我想我会分享以防其他人在这里遇到同样的问题.我也不确定它的解决方案有多棒,但它似乎对我有用.

我的TableView从一个名为的数组中获取数据_objects.在我的排序方法中,我首先创建另一个数组,它是数据数组的精确副本:

    NSArray *objectsBeforeSort = [NSArray arrayWithArray:_objects];
Run Code Online (Sandbox Code Playgroud)

然后我_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];
Run Code Online (Sandbox Code Playgroud)

我还没有广泛测试这个代码,但它似乎给出了期望的结果.