Я создал собственный класс ячейки collectionView, который содержит UIButton. Таким образом, каждая ячейка содержит свою собственную кнопку, которую пользователь может нажать. Однако при каждом нажатии одной кнопки ячейки цвет фона меняется на кнопки в других ячейках. Я хочу, чтобы вместо этого менялся только цвет фона выбранной кнопки, чтобы не допустить перехода на другие кнопки. Ниже приведен мой код:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellID", for: indexPath) as! SubjectsCell
cell.subjectButton.setTitle(subjectNames[indexPath.row], for: .normal)
cell.subjectButton.addTarget(self, action: #selector(updateBackgroundColor(_:)), for: .touchUpInside)
if cell.subjectButton.isChosen == selectedState{
cell.subjectButton.backgroundColor = .green }
else if cell.subjectButton.isChosen != selectedState {
cell.subjectButton.backgroundColor = UIColor(red: 34.0/255.0, green: 210.0/255.0, blue: 255.0/255.0, alpha: 1)
}
return cell
Я понимаю, что dequeueReusableCell вызывает повторное использование некоторых ячеек, если это моя проблема, как предотвратить изменения ячейки в случайных ячейках и повлиять только на ячейку, в которой находится нажатая кнопка .