使用可区分数据源时如何处理空状态 - UICollectionViewDiffableDataSource?
How to handle empty state when using diffable data source - UICollectionViewDiffableDataSource?
在使用传统的UICollectionView时,我们经常使用如下代码来处理空状态:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if items.count == 0 {
// Display empty view
} else {
// Display collection view
}
return items.count
}
在 UICollectionView 或 UITableView 中使用可区分数据源时如何处理状态?
当你是 creating/updating 快照时你可以处理它:
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
}
在使用传统的UICollectionView时,我们经常使用如下代码来处理空状态:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if items.count == 0 {
// Display empty view
} else {
// Display collection view
}
return items.count
}
在 UICollectionView 或 UITableView 中使用可区分数据源时如何处理状态?
当你是 creating/updating 快照时你可以处理它:
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
}