gpt4 book ai didi

ios - 使用可区分数据源时如何处理空状态 - UICollectionViewDiffableDataSource?

转载 作者:行者123 更新时间:2023-12-05 05:57:53 26 4
gpt4 key购买 nike

在使用传统的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 中使用可区分数据源时如何处理状态?

最佳答案

您可以在创建/更新快照时处理它:

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 将显示一个“空”单元格,否则显示正常的“项目”单元格。如果您不需要显示“空” View ,您可以在项目不为空时附加“项目”部分

如果你只想在有项目时显示 Collection View (否则隐藏它),你可以这样做:

if items.isEmpty {
collectionView.isHidden = true
emptyView.isHidden = false
} else {
collectionView.isHidden = false
performQuery(animate: false)
emptyView.isHidden = true
}

关于ios - 使用可区分数据源时如何处理空状态 - UICollectionViewDiffableDataSource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68689687/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com