微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

UITableViewDataSourcePrefetching->prefetchRowsAt 在 indexPaths 数组中总是有 0 和 1

如何解决UITableViewDataSourcePrefetching->prefetchRowsAt 在 indexPaths 数组中总是有 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 对象并将其存储在 prefetch 方法中。然后数据源方法可以检索操作和结果,或者如果它不存在则创建它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。