【发布时间】:2012-09-22 09:00:22
【问题描述】:
我有一个 UITableView,它从数据库中检索一些数据,这些数据的预取成本相对较高。为了解决这个问题,我使用了LazyTableImages 示例代码中的设计理念,在滚动结束时使用[UITableView visibleCells] 获取可见行的数据。
这在性能方面效果很好,但它有两个我想解决的交互问题:
- 在滚动完全停止之前不会加载数据(即
scrollViewDidEndDecelerating)。因此,如果我在列表中缓慢滚动,我必须停止滚动才能将数据加载到那些可见的单元格中。理想情况下,如果滚动速度较慢,我会将数据加载到单元格中。 - 我可能希望预取 1 或 2 个表格单元格数据,这些数据刚刚离开屏幕以期待滚动到它们。
有没有一种优雅的方式来实现这一点? 我感觉我可能缺少解决这个问题的通用设计模式。
【问题讨论】:
-
你应该优化预取。
-
我尝试过的一种方法是一次预加载 30 个单元格,但是如果用户滚动得太快,那么我最终会选择没有数据的单元格然后不加载.
-
在 UITableView 的自定义子类中加载 UITableViewCell 异步的内容。加载完成后,通过返回主线程替换占位符文本。所以主线程(处理 UI 的东西)不会被阻塞太久,它会允许平滑滚动。
标签: ios uitableview