ios - UITableView 动画行在排序时重新排序

标签 ios uitableview animation

我有一个表格,用户可以用两种不同的方式对其进行排序。当用户在这两种排序模式之间切换时,我希望重新排序是动画的。虽然 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/

相关文章:

ios - 动画应用程序的按钮

ios - 设置页面添加或减去不同的图像阵列。使用 swift 和 xcode 进行编码

javascript - React.js - ReactCSSTransitionGroup 抛出异常

javascript - 如何使框过渡仅适用于水平和垂直?

css - 动画 CSS 工具提示 ( :after selector)

ios - 如何检索用户创建的解析对象

ios - Swift 未达到 LocationManager 函数

ios - 在 SpriteKit 场景之间传递数据 (Swift)

ios - 获取包含按下​​的 UIButton 的自定义 UITableViewCell

快速 TableView 不填充