提问人:Mauriho Enrique Escurra Colqui 提问时间:7/20/2022 最后编辑:Mauriho Enrique Escurra Colqui 更新时间:7/20/2022 访问量:658
从 collectionView 中选择一个项目后,如何取消选择其他项目?
how can you deselect the other item once you have selected an item from the collectionView?
问:
在 Swift 中。 重新选择第一项时,它效果很好(它已取消选择),但我有一个问题 当使用“collection.allowsMultipleSelection = true”时,当选择第二项或第三项时,它会为我绘制所有内容(我不想要)。有什么解决方案可以取消选择上一个项目,当我选择更改取消选择的项目(上一个)的新项目时?在斯威夫特。
答:
1赞
DonMag
7/20/2022
#1
听起来你的目标是:
- 一次只允许选择一个单元格
- 还允许点击选定的单元格以取消选择它
如果是这样,您可以通过几种不同的方式进行操作。
一 - 设置集合视图并实现:.allowsMultipleSelection = false
shouldSelectItemAt
func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
// get array of already selected index paths
if let a = collectionView.indexPathsForSelectedItems {
// if that array contains indexPath, that means
// it is already selected, so
if a.contains(indexPath) {
// deselect it
collectionView.deselectItem(at: indexPath, animated: false)
return false
}
}
// no indexPaths (cells) were selected, so return true
return true
}
二、设置与实施:.allowsMultipleSelection = true
didSelectItemAt
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// get array of already selected index paths
if let a = collectionView.indexPathsForSelectedItems {
// for each path in selected index paths
a.forEach { pth in
// if it is NOT equal to the tapped cell
if pth != indexPath {
// deselect it
collectionView.deselectItem(at: pth, animated: false)
}
}
}
}
评论
0赞
Mauriho Enrique Escurra Colqui
7/20/2022
宏伟。你救了我,朋友。你的解决方案非常好。谢谢@donmag
评论
allowsMultipleSelection
allowsMultipleSelection