gpt4 book ai didi

ios - 如何使 UICollectionView 仅在触碰而不是触碰时选择一个单元格

转载 作者:行者123 更新时间:2023-11-28 05:55:41 24 4
gpt4 key购买 nike

基本上我拥有的是一个非常简单的 UICollectionViewCell 子类,它通过 isSelected 属性上的属性观察器更改其背景颜色和其他一些美学特征:

class SelectableCell: UICollectionViewCell {

override var isSelected: Bool{
didSet{
if(isSelected)
{
self.backgroundColor = UIColor.white
}
else
{
self.backgroundColor = UIColor.black
}
}
}
}

这或多或少地按预期工作,如果我在我的集​​合 View 中点击这些单元格之一,背景会相应地改变。

问题是,如果我选择一个单元格,然后决定滚动浏览我的集合,该单元格将取消选择,直到我完成滚动然后重新选择

(NOTE: when I say re-select I don't mean that the delegate functions like didSelectItem are triggered - just that the isSelected property changes back to true)

这似乎只有在我在另一个单元格的边界内开始滚动时才会发生。

所以我假设正在发生的事情是,当我按下时它会立即取消选择单元格,当它检测到我正在滚动而不是点击时它会回滚选择状态并重新选择正确的单元格.

有什么方法可以让它只在润色时提交,或者让它在那个中间时期保持在选定状态?

最佳答案

这是一次只能选择一个单元格时 Collection View 处理选择的方式。一种可能的解决方法是使用多项选择。在这种情况下,您必须自己管理取消选择先前选择的单元格。像这样:

// somewhere in viewDidLoad
collectionView.allowsMultipleSelection = true

//then in your delegate method
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let selectedIndexPaths = collectionView.indexPathsForSelectedItems else { return }

for selectedIndexPath in selectedIndexPaths where selectedIndexPath != indexPath {
collectionView.deselectItem(at: selectedIndexPath, animated: true)
}
}

关于ios - 如何使 UICollectionView 仅在触碰而不是触碰时选择一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51558243/

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