我有一个集合视图(使用组合布局和可比较数据源),其标题中有一个分段控件。当控制值发生变化时,单元格会更新为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