快速重新加载UITableView数据(iOS)

时间:2011-08-08 14:26:29

标签: objective-c ios uitableview

我使用UITableView显示自定义内容(通过子类化UITableViewCell),我有两种类型的内容。

显示的类型1通常由6-7行和1个部分组成,这很快加载完全没问题。默认情况下会显示此数据集。

现在视图上有一个按钮,当点击时会打开一个标志并调用[tableview reloadData],然后提供数据的方法将切换并开始返回第二组数据视图....有关于现在有20,000多条这样的行...而且可能有1,000,000,000(但这不会很快发生......)。

我为第二种类型所做的只是存储一个整数(它们不是顺序的 - 有间隙所以我必须这样做)然后当调用cellForRowAtIndexPath时我返回一个单元并创建一个线程将异步加载到该单元格中的数据。这工作得很好......但问题是,当单击该按钮时,即使表没有加载超过三个组件(它们的高度非常大),切换内容也需要很长时间。 / p>

导致此长数据重新加载时间的原因是什么?...

谢谢。

1 个答案:

答案 0 :(得分:1)

我将假设您正确地异步加载数据并且您没有尝试将20,000多个对象重新加载到内存中,您可能需要仔细检查。否则,如果您要实施tableView:heightForRowAtIndexPath:来设置行的高度,这可能是您的问题。需要为每一行调用此委托方法,以便它可以设置滚动视图内容大小。而是使用UITableView s rowHeight属性。

  

使用会对性能产生影响   tableView:heightForRowAtIndexPath:而不是rowHeight属性。   每次显示表视图时,它都会调用   tableView:heightForRowAtIndexPath:在每个委托的委托上   行,这可能导致表的显着性能问题   具有大量行(大约1000或更多)的视图。