将NSDiffableDataSourceSnapshot应用于具有相同数据结果的动画中

问题描述

我有一个带有UITableViewDiffableDataSource的UITableView,其中我支持拉动刷新和分页。当我使用相同的数据创建一个新快照并应用该快照时,它会产生一个奇怪的动画,其中前几个元素向上滑动,而具有相同数据的新元素从左侧滑动。这是更新的代码段:

var snapshot = NSDiffableDataSourceSnapshot<String,MyItemIdentifier>()

sections.forEach { section in 
  snapshot.appendSections([section.title])
  snapshot.appendItems(section.items,toSection: section.title)
}

self.dataSource?.apply(snapshot)

当数据未更改时,应用内容与上一个快照相同的新快照不应该产生动画吗?我已经用新内容检查了现有内容的哈希值,它们都是一样的。

此外,我还有一个无限滚动功能,可以将项目10乘10。当我向下滚动并加载下一页时,将有10个项目附加到现有数据中。我创建了一个新快照并将其应用于数据源,这再次导致出现奇怪的动画,并且我的表格视图跳到顶部。

在更改之间,创建了新对象,但是它们具有相同的哈希,因此它不应该影响表的刷新,对吗?

是否有人知道导致表视图认为现有内容已更改但没有更改的原因?我发现有关数据源如何进行差异化处理的唯一信息是,它会检查每个部分和每个项目的哈希值。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)