小编Nst*_*age的帖子

在集合视图中应用包含所有新数据的快照后,可比较数据源滚动到顶部

我有一个集合视图(使用组合布局和可比较数据源),其标题中有一个分段控件。当控制值发生变化时,单元格会更新为UICollectionViewCell包含所有新数据的不同类。它基本上按预期工作。问题是当我应用快照时,我的集合视图滚动回顶部。我怎样才能让它不滚动?

当我的视图加载时调用:

    func initialDataSourceSetUp() {
        var snapshot = NSDiffableDataSourceSnapshot<Section, SampleDataObject>()
        snapshot.appendSections([.main])
        snapshot.appendItems(sampleData)
        sampleDataSource.apply(snapshot, animatingDifferences: true, completion: nil)
    }
Run Code Online (Sandbox Code Playgroud)

当分段控件发生变化时调用:

    func updateDataSource() {
        var snapshotSectionMain = sampleDataSource.snapshot(for: .main)
        snapshotSectionMain.deleteAll()
        if currentSegment == 0 {
            snapshotSectionMain.append(sampleData)
        } else {
            snapshotSectionMain.append(sampleData2)
        }
        sampleDataSource.apply(snapshotSectionMain, to: .main)
    }
Run Code Online (Sandbox Code Playgroud)

设置我的单元格和补充视图:

        sampleDataSource = UICollectionViewDiffableDataSource(collectionView: collectionView, cellProvider: { (collectionView, indexPath, item) -> UICollectionViewCell? in
            if self.currentSegment == 0 {
                let cell = collectionView.dequeueReusableCell(withReuseIdentifier: BasicRentalItemCollectionViewCell.identifier, for: indexPath) as! BasicRentalItemCollectionViewCell
                cell.imageMain.image = item.image
                cell.labelTitle.text = item.title
                return cell …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview nsdiffabledatasourcesnapshot uicollectionviewcompositionallayout uicollectionviewdiffabledatasource

10
推荐指数
0
解决办法
1324
查看次数