gpt4 book ai didi

ios - 来自 UICollectionView 的 didSelectItemAt 和 didDeSelectItemAt

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:07 26 4
gpt4 key购买 nike

如果我在 UICollectionView 中使用 didSelectItemAt,我想更改所选单元格的颜色。使用 didDeselectItemAt,我想替换之前选择的单元格的颜色。

搬家前效果很好。但是,移动到最右边将无法正常工作。这是为什么?

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

return 14
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CalendarCollectionViewCell", for: indexPath ) as! CalendarCollectionViewCell

cell.calendarDayLabel.text = calendar?.twoWeeksDay![ indexPath.row ]
cell.calendarDateLabel.text = calendar?.twoWeeksDate![ indexPath.row ]

return cell

}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

let cell = collectionView.cellForItem(at: indexPath) as? CalendarCollectionViewCell


cell?.calendarDayLabel.textColor = UIColor( red: 255, green: 0, blue: 0, alpha: 1.0 )
cell?.calendarDateLabel.textColor = UIColor( red: 255 , green: 255 , blue: 255 , alpha: 1.0 )
cell?.calendarCircleImageView.isHidden = false

self.selectYear = self.calendar?.twoWeeksYear![ indexPath.row ]
self.selectMonth = self.calendar?.twoWeeksMonth![ indexPath.row ]
self.selectDate = self.calendar?.twoWeeksDate![ indexPath.row ]
self.selectDay = self.calendar?.twoWeeksDay![ indexPath.row ]

self.selectDateTime.text = self.selectYear! + "년 " + self.selectMonth! + "월 " + self.selectDate! + "일 " + self.selectDay!

self.selectDateTime.isHidden = false

}

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {


let cell = collectionView.cellForItem(at: indexPath) as? CalendarCollectionViewCell
cell?.calendarDayLabel.textColor = UIColor( red: 0, green: 0, blue: 0, alpha: 1.0 )
cell?.calendarDateLabel.textColor = UIColor( red: 0 , green: 0 , blue: 0 , alpha: 1.0 )
cell?.calendarCircleImageView.isHidden = true

}

enter image description here

最佳答案

因为细胞被重复使用

 var selectedIndex:IndexPath?

//

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CalendarCollectionViewCell", for: indexPath ) as! CalendarCollectionViewCell

if indexPath == selectedIndex {

cell.calendarDayLabel.textColor = UIColor( red: 255, green: 0, blue: 0, alpha: 1.0 )
cell.calendarDateLabel.textColor = UIColor( red: 255 , green: 255 , blue: 255 , alpha: 1.0 )
cell.calendarCircleImageView.isHidden = false

}
else {

cell.calendarDayLabel.textColor = UIColor( red: 0, green: 0, blue: 0, alpha: 1.0 )
cell.calendarDateLabel.textColor = UIColor( red: 0 , green: 0 , blue: 0 , alpha: 1.0 )
cell.calendarCircleImageView.isHidden = true

}


}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

selectedIndex = indexPath
collectionView.reloadData()

}

移除 didDeselectItemAt

关于ios - 来自 UICollectionView 的 didSelectItemAt 和 didDeSelectItemAt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51526703/

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