问题描述
我有一个带有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 (将#修改为@)