我需要在我的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
方法很慢。因此,我需要通过调用此方法将惰性填充数据实现到单元格中。我期望的结果是表视图将平滑滚动,但单元格的内容将在绘制单元格后填充一点。请帮帮我,怎么办?
答案 0 :(得分:3)
是的,您可以将数据集推送到后台线程。首先要尝试的是最简单的选项,看它是否能改善任何东西:
[MyDataClass performSelectorInBackground:@selector(dataForCellAtIndexPath:) withObject:indexpath.row];
此post提到了其他一些更复杂,可自定义的选项,例如Grand Central Dispatch和NSThread。
答案 1 :(得分:2)
如果您使用大量数据,我建议将其保存到Core-data
和/或使用NSFetchedResultsController
填充您的tableView。
它已被创建&与你的tableView捆绑在一起主要是为了更快地填充你的tableView并具有高性能。
以下是NSFetchedResultsController文档的链接!
答案 2 :(得分:-1)
因为你可以根据表格单元格的索引值加载新数据
您可以为要加载的新数据设置条件,因为它取决于用户当前检查的单元格。