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 ... должно быть лучшее решение)

0 ответов

Другие вопросы по тегам