UITableView延迟加载单元格数据

时间:2012-04-10 16:05:23

标签: iphone objective-c uitableview

我需要在我的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方法很慢。因此,我需要通过调用此方法将惰性填充数据实现到单元格中。我期望的结果是表视图将平滑滚动,但单元格的内容将在绘制单元格后填充一点。请帮帮我,怎么办?

3 个答案:

答案 0 :(得分:3)

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

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

post提到了其他一些更复杂,可自定义的选项,例如Grand Central DispatchNSThread

答案 1 :(得分:2)

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

它已被创建&与你的tableView捆绑在一起主要是为了更快地填充你的tableView并具有高性能。

以下是NSFetchedResultsController文档的链接!

答案 2 :(得分:-1)

因为你可以根据表格单元格的索引值加载新数据

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