我正在使用 UITableView 来显示自定义内容(通过子类化 UITableViewCell)并且我有两种类型的内容。
通常显示的类型 1 由 6-7 行和 1 个部分组成,加载速度非常快,完全没有问题。默认显示此数据集。
现在 View 上有一个按钮,单击该按钮将打开一个标志并调用 [tableview reloadData] 然后提供数据的方法将切换并开始返回第二组数据 View ....大约有现在有 20,000 多行......并且可能有 1,000,000,000 行(但这不会很快发生......)。
我为第二种类型所做的就是存储一个整数(它们不是顺序的 - 有间隙所以我必须这样做)然后每当调用 cellForRowAtIndexPath 时我返回一个单元格并创建一个线程会将数据异步加载到该单元格中。这工作正常......但问题是,当单击该按钮时,即使表格加载的组件不超过三个(它们的高度相当大),也需要很长时间才能切换内容......
是什么导致了如此长的数据重新加载时间?...
谢谢。
最佳答案
我将假设您正确地异步加载了数据并且您没有尝试将 20,000 多个对象重新加载到内存中,您可能需要仔细检查。否则,如果您正在实现 tableView:heightForRowAtIndexPath:
设置你的行高这可能是你的问题。需要为每一行调用此委托(delegate)方法,以便它可以设置 ScrollView 内容大小。而是使用 UITableView
的 rowHeight
属性。
There are performance implications to using tableView:heightForRowAtIndexPath: instead of the rowHeight property. Every time a table view is displayed, it calls tableView:heightForRowAtIndexPath: on the delegate for each of its rows, which can result in a significant performance problem with table views having a large number of rows (approximately 1000 or more).
关于objective-c - 快速重新加载 UITableView 数据 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6983638/