5

我需要在我的 UITableView 中实现某种延迟加载。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //... some initializations here

    //this is a function that pulls my cell data using helper class
    NSData *cellData=[MyDataClass dataForCellAtIndexPath:indexpath.row];

    //... here I populate pulled data to cell

    return cell;
}

一切都很好,表格视图滚动不顺畅,因为dataForCellAtIndexPath方法很慢。所以我需要通过调用这个方法来实现将数据延迟填充到单元格中。我期望的结果是表格视图将平滑滚动,但单元格的内容将在绘制单元格后填充一点。请帮帮我,怎么办?

4

3 回答 3

4

是的,您可以考虑将数据收集推送到后台线程。首先要尝试的是最简单的选项,看看它是否能改进任何东西:

[MyDataClass performSelectorInBackground:@selector(dataForCellAtIndexPath:) withObject:indexpath.row];

这篇文章提到了其他一些更复杂的可定制选项,例如Grand Central DispatchNSThread

于 2012-04-10T16:20:32.327 回答
2

如果您使用大量数据,我建议将它们保存到Core-data和/或用于NSFetchedResultsController填充您的 tableView。

它已创建并与您的 tableView 绑定,主要是为了更快地填充您的 tableView 并具有高性能。

这是NSFetchedResultsController文档的链接!

于 2012-04-10T16:14:45.227 回答
-1

为此,您可以根据表格单元格的索引值加载新数据

您可以设置要加载多少新数据的条件,因为它取决于用户当前检查的单元格。

于 2012-04-10T17:22:05.647 回答