UICollectionViewCompositionalLayout + UICollectionViewDiffableDataSource: есть ли способ изменить вид украшения в зависимости от данных раздела?
У меня есть UICollectionView
который использует UICollectionViewCompositionalLayout
а также UICollectionViewDiffableDataSource
и работает нормально.
Ячейки предоставляются cellProvider, определенным в инициализаторе источника данных. Поставщик возвращает ячейки с данными, специфичными для indexPath.
Дополнительные обзоры предоставлены var supplementaryViewProvider: UICollectionViewDiffableDataSource<SectionIdentifierType, ItemIdentifierType>.SupplementaryViewProvider
Единственная проблема: я не нашел что-то вроде DecorationViewProvider
:
Следуя примеру WWDC 2019, я использую
layout.register(SectionBackgroundDecorationView.self, forDecorationViewOfKind:
MyCompositionalCollectionViewController.sectionBackgroundDecorationElementKind)
а также
let sectionBackgroundDecoration = NSCollectionLayoutDecorationItem.background(
elementKind: MyCompositionalCollectionViewController.sectionBackgroundDecorationElementKind)
section.decorationItems = [sectionBackgroundDecoration]
чтобы обеспечить вид фона для раздела.
Проблема: поскольку я не нашел поставщика, представление фонового оформления инициализируется автоматически, поэтому я не нашел способа изменить его в зависимости от данных раздела.
Например, я хотел бы установить другой цвет для вида оформления фона в зависимости от раздела.
Как я могу сообщить фоновому представлению, какому разделу он принадлежит, или как установить свойства в зависимости от раздела?
(Только грязный прием, который приходит мне в голову: я мог бы написать 20 разных классов SectionBackgroundDecorationView1
, SectionBackgroundDecorationView2
, используйте другой forDecorationViewOfKind:
для каждого класса жестко запрограммировано, что он принадлежит разделу 0, разделу 1 ... должно быть лучшее решение)