UITableViewDataSourcePrefetching->prefetchRowsAt 在 indexPath 数组中始终具有 0 和 1



我使用UITableViewDiffableDataSource作为tableView的数据源。在初始加载时,从服务器中提取并显示8个项目。当我尝试滚动时,

func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) {

但是indexPaths总是具有0和/或1。请求预取10、11、12等行永远不会递增。我在这里错过了什么?

来自Apple文档:

表视图不会为它们立即需要的单元格调用此方法,因此数据源对象也必须能够获取数据本身。

这种方法由文档提供:

tableView(:prefetchRowsAt:(方法不一定对表视图中的每个单元格都调用。因此,tableView(:cellForRowAt:(的实现必须能够应对以下潜在情况:

  • 数据已通过预取请求加载,准备显示
  • 数据当前正在预取,但尚未可用
  • 尚未请求数据

处理所有这些情况的一种方法是使用Operation加载每行的数据。您可以创建Operation对象并将其存储在预取方法中。然后,数据源方法可以检索操作和结果,或者在不存在的情况下创建它。

最新更新