首页 > 解决方案 > UICollectionVIew Compositional Layout & DiffableDataSource,如何开启数据预取?

问题描述

使用新的 Compositional Layout & DiffableDataSource 时如何启用数据预取?

之前,我们可以通过符合自定义数据源对象来实现这一点,例如,

class CustomDataSource: NSObject, UICollectionViewDataSource, UICollectionViewDataSourcePrefetching

现在,数据源是UICollectionViewDiffableDataSource,它只符合UICollectionViewDataSource.

一种方法是扩展它以符合预取协议。但是,由于它将 DataSource 的协议实现封装到其更高级别的方法中,例如snapshotsapply。我不知道如何扩展它以符合预取协议。

标签: iosuicollectionviewuikituicollectionviewcompositionallayoutuicollectionviewdiffabledatasource

解决方案


您的实现是在被调用UICollectionViewDataSourcePrefetching的单独属性上设置的。所以你不应该需要子类UICollectionViewprefetchDataSourceUICollectionViewDiffableDataSource

https://developer.apple.com/documentation/uikit/uicollectionview/1771768-prefetchdatasource

我可以确认使用UICollectionViewDiffableDataSource. 您需要将预取的数据缓存在某处,然后从您的cellProvider(或UICollectionView.CellRegistration)访问它

例如,如果您的视图控制器实现UICollectionViewDataSourcePrefetching了,那么您可能有一行将其分配为prefetchDataSource

myCollectionView.prefetchDataSource = self

推荐阅读