【发布时间】:2020-07-20 12:33:27
【问题描述】:
我使用UICollectionViewDiffableDataSource 作为我的collectionView 的数据源。我的 CollectionView 中有 3 个部分:
enum Section {
case section1
case section2
case section3
}
最初,我使用以下代码将这 3 个部分附加到 collectionView:
var snapshot = self.diffableDataSource.snapshot()
snapshot.appendSections([.section1, .section2, .section3])
self.diffableDataSource.apply(snapshot)
然后我使用以下代码将项目附加到部分:
var snapshot = self.diffableDataSource.snapshot()
snapshot.appendItems([myItems], toSection: .section1)
self.diffableDataSource.apply(snapshot)
我的问题是我无法弄清楚如何在不将它们附加到当前项目的情况下使用一组新项目重新加载集合视图中的部分。 snapshot 可用的方法仅允许将项目附加到该部分,但我需要替换该部分的项目。我尝试删除该部分,将其附加回来,然后附加新的一组项目:
snapshot.deleteSections([.section1])
snapshot.appendSections([.section1])
snapshot.appendItems([myItems], toSection: .section1)
这只会删除该部分,但不会加载新项目。我正在寻找一种方法来简单地用新项目刷新该部分,类似于使用普通 UICollectionViewDataSource 时调用collectionView.reloadData() 的方式。
【问题讨论】:
标签: ios swift uicollectionview