使用新行动态加载 UITableView

Dynamically loading UITableView with new rows

我已经搜索过了,但还没有得出明确的答案。

我有一个类似于 Facebook 和 Instagram 的应用程序,一旦你到达 UITableView 的底部,它就会调用一个网络服务并加载另外 25 行数据。

我面临的问题是,在加载新的 25 件时,我正在调用 reloadData,这会导致令人不快的 UI 闪烁。

在 UITableView 滚动时将新数据动态添加到不闪烁的正确方法是什么(也就是不调用 reloadData

将新行项添加到数据源后,您需要使用 [tableView beginUpdates];[tableView endUpdates]; 而不是 reloadData

NSMutableArray *indexPathsToAdd = [NSMutableArray new];

for (Object *object in currentObjects)
{
    if (![newObjects containsObject:object]) {
        int row = [currentObjects indexOfObject:object];
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
        [indexPathsToAdd addObject:indexPath];
    }
}

[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:indexPathsToAdd withRowAnimation:UITableViewRowAnimationAutomatic];
[tableView endUpdates];