首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITableView/UICollectionView委托中的iOS 13 NSDiffableDataSourceSnapshot

UITableView/UICollectionView委托中的iOS 13 NSDiffableDataSourceSnapshot
EN

Stack Overflow用户
提问于 2019-09-09 18:40:11
回答 1查看 1K关注 0票数 2

我一直在玩新的iOS 13不同的数据源,并发现它们非常容易和直接使用。

不过,我对一件事不太确定。是否建议使用不同数据源的快照属性(例如在UITableViewDelegate中)来获得区段高度?

这是我最初的方法

代码语言:javascript
复制
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
     let section = dataSource.snapshot().sectionIdentifiers[section]
     return section.footerHeight
}

dataSource是我的可扩展数据源属性,而footerHeight是my中的一个计算属性,由可扩展数据源使用。

我看过一些教程,它们创建了对最新快照的引用。

代码语言:javascript
复制
var currentSnapshot: NSDiffableDataSourceSnapshot?

并在每次应用新快照时更新表数据源。所以我的原始代码现在可能是这样的

代码语言:javascript
复制
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
     let section = currentSnapshot?.sectionIdentifiers[section]
     return section?.footerHeight ?? 0
}

从苹果文档判断,每次都会创建数据源的snapshot()方法,因此我觉得我的第一种方法对于每个部分来说都不是很有效,甚至可能会创建一个新的快照副本。

方法2是更好的方法吗?或者创建快照非常有效,因此方法1很好?

EN

回答 1

Stack Overflow用户

发布于 2020-01-07 12:17:52

在实践中,这两种方式是相同的。在调用apply之后,分别创建一次快照

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57859564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档