您可以在创建/更新快照时处理它:
func performQuery(animate: Bool) {
var currentSnapshot = NSDiffableDataSourceSnapshot<Section, ViewCell>()
if items.isEmpty {
currentSnapshot.appendSections([Section(name: "empty")])
currentSnapshot.appendItems([ViewCell(tag: 0, type: .empty)], toSection: Section(name: "empty"))
} else {
currentSnapshot.appendSections([Section(name: "items")])
currentSnapshot.appendItems([ViewCell(tag: 1, type: .item)], toSection: Section(name: "items"))
}
dataSource.apply(currentSnapshot, animatingDifferences: animate)
}
使用上面的代码,当项目为空时,CollectionView 将显示一个“空”单元格,否则显示正常的“项目”单元格。如果您不需要显示“空”视图,则可以在项目不为空时附加“项目”部分
如果您只想在有项目时显示集合视图(否则隐藏它),您可以执行以下操作:
if items.isEmpty {
collectionView.isHidden = true
emptyView.isHidden = false
} else {
collectionView.isHidden = false
performQuery(animate: false)
emptyView.isHidden = true
}