UICollectionVIew Compositional Layout и DiffableDataSource, как включить предварительную выборку данных?
Как включить предварительную выборку данных при использовании нового Compositional Layout и DiffableDataSource?
Раньше мы могли добиться этого, согласовав настраиваемый объект источника данных, например,
class CustomDataSource: NSObject, UICollectionViewDataSource, UICollectionViewDataSourcePrefetching
Теперь источником данных является
UICollectionViewDiffableDataSource
, что соответствует только
UICollectionViewDataSource
.
Один из способов - расширить его, чтобы он соответствовал протоколу предварительной выборки. Однако из-за того, что он инкапсулирует реализации протокола DataSource в свои методы более высокого уровня, такие как
snapshots
и
apply
. Я не могу понять, как расширить его, чтобы он соответствовал протоколу предварительной выборки.
1 ответ
Ваша реализация устанавливается в отдельном свойстве
UICollectionView
называется . Таким образом, вам не нужно создавать подкласс
https://developer.apple.com/documentation/uikit/uicollectionview/1771768-prefetchdatasource
Я могу подтвердить, что предварительная загрузка работает при использовании
UICollectionViewDiffableDataSource
. Вам нужно будет где-то кэшировать предварительно загруженные данные, а затем получить к ним доступ со своего
cellProvider
(или же
UICollectionView.CellRegistration
)
Например, если ваш контроллер представления реализует
UICollectionViewDataSourcePrefetching
тогда у вас может быть строка, в которой вы назначаете ее как
prefetchDataSource
:
myCollectionView.prefetchDataSource = self