gpt4 book ai didi

ios - 对于在 cellForItemAt 中将 isSelected 设置为 true 的单元格,为什么 UICollectionView 未将 isSelected 设置为 false?

转载 作者:行者123 更新时间:2023-12-01 16:14:52 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





UICollectionView - didDeselectItemAtIndexPath not called if cell is selected

(8 个回答)


4年前关闭。




我正在使用 UICollectionView使用默认选择规则(仅限单选)。在我的自定义 UICollectionViewCell类,我已经覆盖 isSelected像这样:

override var isSelected: Bool {
didSet {
self.backgroundColor = isSelected ? UIColor.gray : UIColor.white
}
}

我也设置了 isSelected对于我的 View Controller 中的一个特定单元格 collection​View(_:​cell​For​Item​At:​)因为,出于某种原因,该系列的 selectItem()方法在 cellForItemAt 中不起作用.

这使我能够确保在包含集合的整个 View 实际出现之前选择了这个单元格并更改了其背景,但它产生了一个奇怪的问题。

当我开始点击其他集合单元格并选择它们时,我从一开始就设置为选定的那个单元格的背景颜色没有设置为白色。

然而,当我通过点击它们依次选择不同的单元格时,它们的背景颜色切换为白色正如预期的那样,同时我设置的那个单元格 isSelected在集合的初始种群期间,除非我专门点击它,然后在不同的单元格中将其远离,否则它会保持灰色。

谁能帮我弄清楚这是为什么?为什么不是 isSelected被设置为 false当我点击除 isSelected 之外的单元格时我在 cellForItemAt 中设置的属性?

编辑:我尝试实现 collection​View:​did​Deselect​Item​At​Index​Path:​ ,而且它根本不会触发。所以一方面, isSelected属性已明确设置,因为该单元格的背景变为灰色,但另一方面, 该集合似乎没有将该单元格视为已选中 .

最佳答案

当您编辑问题时,您可以使用这种方法。

// change background color when user touches cell
func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
cell?.backgroundColor = UIColor.gray
}

// change background color back when user releases touch
func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
cell?.backgroundColor = UIColor.white
}

关于ios - 对于在 cellForItemAt 中将 isSelected 设置为 true 的单元格,为什么 UICollectionView 未将 isSelected 设置为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43025172/

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