UICollectionVIew Compositional Layout & DiffableDataSource,如何开启数据预取?
UICollectionVIew Compositional Layout & DiffableDataSource, how to enable data prefetching?
如何在使用新的 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
如何在使用新的 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