我很难一键取消选择一个单元格。当我单击单元格时,其中的标签文本会突出显示,当我取消选择单元格时,第一次单击取消选择突出显示的标签文本颜色,将其变为黑色,然后需要第二次单击以取消选择单元格并留下痕迹白色彩色文字背后...我试图禁用标签的高亮功能,但我被困在这里。你可以看到标签的设置,它突出显示颜色为白色。
我只实现了这个func collectionView(_ collectionView:UICollectionView,didSelectItemAt indexPath:IndexPath)
我也尝试设置dateLabel.isHighlighted = false,但我得到的是线程1:致命错误:在解开可选的时候意外地发现了nil
我有一个带有布尔值的字典来跟踪被选中或不被选中的单元格的状态,但这种方法无法解决我的问题
更新
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
//addToList[currentMonthIndex].append(indexPath)
//dayCollectionView.deselectItem(at: indexPath, animated: true)
let cell = collectionView.cellForItem(at: indexPath) as! CustomCell
cell.dateLabel.isHighlighted = false
cell.dateLabel.isUserInteractionEnabled = false
}
我已经成功禁用了两者,但我仍然需要双击才能取消选择它。看起来里面的标签只需点击一下。我确信这是因为否则在第二次点击时将取消选择单元格,因为跟踪单元格选择状态的全局数组将被该单击更改。
答案 0 :(得分:0)
两件事:
在您的UICollectionViewCell子类中:
override var isHighlighted: Bool {
willSet {
if newValue { // set selected state
} else { // set deselected state
}
}
}
然后我只实现了这个
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
委托电话:
cell.isSelected = !cell.isSelected