我将从解释事情如何工作开始:
我有具有组合布局和可区分数据源的集合视图。
单元格代表任务,用户可以单击并将其设置为今天已完成,单元格具有不同的外观,具体取决于其是否设置为已完成,并且单元格检查 CoreData 以了解它是否已完成。
现在我试图实现一个想法,即一天完成的任务进入视图的底部,因此顶部只有那些仍然必须完成的任务。为此,我为我的获取请求设置了排序描述符。
直到那一刻一切都按预期工作,但我想让这个单元格向下移动,所以我
dataSource.apply(snapshot, animatingDifferences: false)
改为true
现在它的动画但单元格在设置为完成时不会改变外观。
这是我的 setupSnapshot 方法():
func setupSnapshot() {
snapshot = NSDiffableDataSourceSnapshot<Section, Task>()
snapshot.appendSections([.main])
snapshot.appendItems(fetchedResultsController.fetchedObjects ?? [])
dataSource.apply(snapshot, animatingDifferences: true)
}
看看: animatingDifferences: false(left) and true(right)
总而言之,我的目标是:
1)动画单元格和2)设置为完成时更改外观。似乎 with animatingDifferences: false
i 只能有目标 2而 withanimatingDifferences: true
只能有目标 1
我已经尝试研究过这个主题,并发现了两次应用快照的方法,一次用于部分,一次用于项目,但没有任何区别。
任何人都可以指出我在这里缺少什么?