У меня есть одно свойство ячейки представления коллекции, которое называется isSelected = bool
. Таким образом, по умолчанию первый элемент будет выбран, поэтому я использую для передачи isSelected = true
первый элемент после viewdidappear на экране.
Теперь в моем методе didselect, если я выбираю какую-либо ячейку, эта конкретная собственность ячейки должна быть isSelected = true
и предыдущее свойство ячейки должно быть ложным.
теперь проблема заключается только в видимой ячейке, которую я могу перебрать и установить isSelected = false
. Мне нужно зациклить все видимые и невидимые ячейки, и мне нужно изменить свойство, и снова мне нужно обработать значение выбранного свойства ячейки для изменения.
Мне нужно переписать мою логику вместо использования двух экземпляровпроблема, почему я меняюсь, похожа. Если я выберу какую-либо ячейку в видимой ячейке и установлю значение true. снова, если я прокручиваю до невидимой ячейки и выбираю любую ячейку, которая меняется на true.
, что означает, что у моего свойства двух ячеек есть isSelected = false
. Как я могу это изменить.
обновлено:
var selectedChartIndex: Int = -1
if self.selectedChartIndex == indexPath.row {
(cell as? userCell)?.selectedCell = true
} else {
(cell as? userCell)?.selectedCell = false
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: IndexPath(row: selectedChartIndex, section: 0)) as? userCell {
cell.selectedCell = false
}
(collectionView.cellForItem(at: indexPath) as? userCell)?.selectedCell = true
selectedChartIndex = indexPath.row
}
если я сделаю так:
if let cell = collectionView.cellForItem(at: IndexPath(row: selectedChartIndex, section: 0)) as? userCell {
cell.selectedCell = false
}
тогда, если я выберу любую ячейку, она не выделяется, это нормально,но когда я непрерывно прокручиваю представление коллекции, выделенный элемент выделяется