ios - UICollectionVIew Compositional Layout & DiffableDataSource,如何开启数据预取?
问题描述
使用新的 Compositional Layout & DiffableDataSource 时如何启用数据预取?
之前,我们可以通过符合自定义数据源对象来实现这一点,例如,
class CustomDataSource: NSObject, UICollectionViewDataSource, UICollectionViewDataSourcePrefetching
现在,数据源是UICollectionViewDiffableDataSource
,它只符合UICollectionViewDataSource
.
一种方法是扩展它以符合预取协议。但是,由于它将 DataSource 的协议实现封装到其更高级别的方法中,例如snapshots
和apply
。我不知道如何扩展它以符合预取协议。
解决方案
您的实现是在被调用UICollectionViewDataSourcePrefetching
的单独属性上设置的。所以你不应该需要子类UICollectionView
prefetchDataSource
UICollectionViewDiffableDataSource
https://developer.apple.com/documentation/uikit/uicollectionview/1771768-prefetchdatasource
我可以确认使用UICollectionViewDiffableDataSource
. 您需要将预取的数据缓存在某处,然后从您的cellProvider
(或UICollectionView.CellRegistration
)访问它
例如,如果您的视图控制器实现UICollectionViewDataSourcePrefetching
了,那么您可能有一行将其分配为prefetchDataSource
:
myCollectionView.prefetchDataSource = self
推荐阅读
- javascript - 无法从部分视图 Laravel 访问 javascript
- python - Python - 无法访问类的实例
- jquery - 通过表单选择更改 html 样式?
- ruby - Ruby中的Hello World不输出到终端
- c++ - 无法推断返回类型的模板参数
- android - React native flatlist 无法在一个中呈现 20 个项目
- sockets - 是否可以在私有 IP 上运行 Web 服务器?
- javascript - 在javascript中旋转一个数组
- jquery - 当最后一个项目出现时禁用刷卡(idangero.us)
- java - 需要帮助破译 Java 中的阶乘代码