首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UICollectionView中使用UICollectionViewDiffableDataSource重新加载数据?

如何在UICollectionView中使用UICollectionViewDiffableDataSource重新加载数据?
EN

Stack Overflow用户
提问于 2020-07-20 12:33:27
回答 1查看 2K关注 0票数 4

我使用UICollectionViewDiffableDataSource作为我的收藏品视图的数据源。在我的CollectionView中有三个部分:

代码语言:javascript
复制
enum Section {
    case section1
    case section2
    case section3
}

最初,我使用以下代码将这三个部分附加到collectionView中:

代码语言:javascript
复制
var snapshot = self.diffableDataSource.snapshot()
snapshot.appendSections([.section1, .section2, .section3])
self.diffableDataSource.apply(snapshot)

然后,我使用以下代码将项附加到各节:

代码语言:javascript
复制
var snapshot = self.diffableDataSource.snapshot()
snapshot.appendItems([myItems], toSection: .section1)
self.diffableDataSource.apply(snapshot)

我的问题是,如果不将一组新的项附加到当前的项中,我就无法找到如何重新加载集合视图中的一个部分。snapshot可用的方法只允许将项附加到节中,但我需要替换节中的项。我尝试删除该部分,并将其追加到后面,然后追加新的一组项:

代码语言:javascript
复制
snapshot.deleteSections([.section1])
snapshot.appendSections([.section1])
snapshot.appendItems([myItems], toSection: .section1)

这只是移除部分,但不加载新项。我正在寻找一种方法,简单地用新项刷新该部分,类似于在使用普通collectionView.reloadData()时如何调用UICollectionViewDataSource。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-20 14:13:27

直接修改快照

  • 确定该节中的项,删除
  • 中的项目,删除附加新项目
  • 的新项目
  • ,重新添加

<代码>H19应用快照<代码>H 210<代码>F 211

这是作为UICollectionViewDiffableDataSource扩展的一个通用方法。

代码语言:javascript
复制
extension UICollectionViewDiffableDataSource {
    
    func replaceItems(_ items : [ItemIdentifierType], in section: SectionIdentifierType) {
        var currentSnapshot = snapshot()
        let itemsOfSection = currentSnapshot.itemIdentifiers(inSection: section)
        currentSnapshot.deleteItems(itemsOfSection)
        currentSnapshot.appendItems(items, toSection: section)
        currentSnapshot.reloadSections([section])
        apply(currentSnapshot, animatingDifferences: true)
    }
}

请用大写字母和单数形式(MyItem)命名表示数据源的结构。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62995493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档