Попытка настроить UICollectionViewDiffableDataSource

func configureDataSource() {
    print("configure dataSource!!!")

    dataSource = UICollectionViewDiffableDataSource
      <Section, StoryItem>(collectionView: storyCollectionView) {
        (collectionView: UICollectionView, indexPath: IndexPath, storyItem: StoryItem) -> UICollectionViewCell? in

    print("try creating a collection view cell!")

Оператор печати, показывающий, что функция была вызвана, появляется в консоли, но код внутри { for UICollectionViewDiffableDataSource не запускается.

Есть предложения по дальнейшему устранению неполадок? Спасибо!

1 ответ

Решение

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

Типичный танец (обычно в viewDidLoad) будет выглядеть примерно так:

// make the data source
self.datasource = UICollectionViewDiffableDataSource<String,String>(collectionView:self.collectionView) { 
    cv,ip,s in
    return self.makeCell(cv,ip,s) // return cell
}
// give it a supplementary view provider if you have headers/footers
self.datasource.supplementaryViewProvider = { cv,kind,ip in
    return self.makeSupplementaryView(cv,kind,ip) // return view
}
// give the data source some data (here, my data is sitting in `sections`)
var snap = NSDiffableDataSourceSnapshot<String,String>()
for section in sections {
    snap.appendSections([section.0])
    snap.appendItems(section.1)
}
self.datasource.apply(snap, animatingDifferences: false)
Другие вопросы по тегам