我使用UITableView显示自定义内容(通过子类化UITableViewCell),我有两种类型的内容。
显示的类型1通常由6-7行和1个部分组成,这很快加载完全没问题。默认情况下会显示此数据集。
现在视图上有一个按钮,当点击时会打开一个标志并调用[tableview reloadData],然后提供数据的方法将切换并开始返回第二组数据视图....有关于现在有20,000多条这样的行...而且可能有1,000,000,000(但这不会很快发生......)。
我为第二种类型所做的只是存储一个整数(它们不是顺序的 - 有间隙所以我必须这样做)然后当调用cellForRowAtIndexPath时我返回一个单元并创建一个线程将异步加载到该单元格中的数据。这工作得很好......但问题是,当单击该按钮时,即使表没有加载超过三个组件(它们的高度非常大),切换内容也需要很长时间。 / p>
导致此长数据重新加载时间的原因是什么?...
谢谢。
答案 0 :(得分:1)
我将假设您正确地异步加载数据并且您没有尝试将20,000多个对象重新加载到内存中,您可能需要仔细检查。否则,如果您要实施tableView:heightForRowAtIndexPath:
来设置行的高度,这可能是您的问题。需要为每一行调用此委托方法,以便它可以设置滚动视图内容大小。而是使用UITableView
s rowHeight
属性。
使用会对性能产生影响 tableView:heightForRowAtIndexPath:而不是rowHeight属性。 每次显示表视图时,它都会调用 tableView:heightForRowAtIndexPath:在每个委托的委托上 行,这可能导致表的显着性能问题 具有大量行(大约1000或更多)的视图。