Определение идентификатора раздела для NSCollectionViewCompositionalLayout - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь создать NSCollectionView с динамическим числом секций, используя NSCollectionViewDiffableDataSource и NSCollectionViewCompositionalLayout.

Представление коллекции используется для отображения результатов поиска, а количество секций зависит оттип и количество найденных результатов. Каждый раздел отображает свой тип содержимого с использованием разного макета.

Источник данных объявляется как NSCollectionViewDiffableDataSource<String, SearchResult>, где SearchResult - это класс, реализующий Hashable с использованием UUID(). Разделы с нулевым результатом не являются пустыми, скорее они не существуют в представлении коллекции.

Одна из трудностей, с которыми я сталкиваюсь, заключается в определении идентификатора раздела, соответствующего sectionIndex в sectionProvider макета:

private func createLayout() -> NSCollectionViewLayout {
    let sectionProvider = { (sectionIndex: Int, layoutEnvironment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection in
        // How can the section identifier corresponding to `sectionIndex` be determined?

        // Create a `NSCollectionLayoutSection` appropriate for the section type
        let section = NSCollectionLayoutSection(/* ... */)
        return section
    }
    return NSCollectionViewCompositionalLayout(sectionProvider: sectionProvider)
}

Поскольку представление коллекции имеет различное количество разделов в зависимости от результатов поиска, тип отображаемых элементов может изменяться 0.

См. https://github.com/sbooth/DiffableTest дляпример проекта.

...