无效的 UICollectionView 更新
Invalid UICollectionView Update
我有一个分段的 uicollectionview
嵌套单元格,可以点击删除。
我的目标是显示来自数据源的单元格(如果可用),如果不可用,则显示一个 "placeholder" 单元格,说明当前没有可用数据。
我的问题出现在删除给定部分下的最后一个剩余单元格时。我的 numberOfItemsInSection
是 1,专门用于 "placeholder" 单元格,但应该为 0 以与没有更多数据可用的数据源 0 对齐。
有什么变通办法吗?
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 3
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if sectionItems[section].count == 0 {
return 1
}
else {
return sectionItems[section].count
}
}
func onTap() {
self.sectionItems[indexPath.section]?.remove(at: indexPath.item)
self.exampleCollectionView.deleteItems(at: [indexPath])
}
删除最后一项时,您需要重新加载 "No Items" 单元格。这样的事情应该有效:
func onTap() {
sectionItems[indexPath.section]?.remove(at: indexPath.item)
let isEmpty = sectionItems[indexPath.section]?.count ?? 0 == 0
exampleCollectionView.performBatchUpdates({
if isEmpty {
self.exampleCollectionView.reloadItems(at: [indexPath])
} else {
self.exampleCollectionView.deleteItems(at: [indexPath])
}
}, completion: nil})
}
本质上,您需要告诉 collectionView 在删除最后一项时更新后仍然会有一个单元格。
我有一个分段的 uicollectionview
嵌套单元格,可以点击删除。
我的目标是显示来自数据源的单元格(如果可用),如果不可用,则显示一个 "placeholder" 单元格,说明当前没有可用数据。
我的问题出现在删除给定部分下的最后一个剩余单元格时。我的 numberOfItemsInSection
是 1,专门用于 "placeholder" 单元格,但应该为 0 以与没有更多数据可用的数据源 0 对齐。
有什么变通办法吗?
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 3
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if sectionItems[section].count == 0 {
return 1
}
else {
return sectionItems[section].count
}
}
func onTap() {
self.sectionItems[indexPath.section]?.remove(at: indexPath.item)
self.exampleCollectionView.deleteItems(at: [indexPath])
}
删除最后一项时,您需要重新加载 "No Items" 单元格。这样的事情应该有效:
func onTap() {
sectionItems[indexPath.section]?.remove(at: indexPath.item)
let isEmpty = sectionItems[indexPath.section]?.count ?? 0 == 0
exampleCollectionView.performBatchUpdates({
if isEmpty {
self.exampleCollectionView.reloadItems(at: [indexPath])
} else {
self.exampleCollectionView.deleteItems(at: [indexPath])
}
}, completion: nil})
}
本质上,您需要告诉 collectionView 在删除最后一项时更新后仍然会有一个单元格。