Не удалось зациклить все видимые и невидимые ячейки в представлении коллекции и изменить свойство ячейки - PullRequest
0 голосов
/ 21 октября 2019

У меня есть одно свойство ячейки представления коллекции, которое называется 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

        }

тогда, если я выберу любую ячейку, она не выделяется, это нормально,но когда я непрерывно прокручиваю представление коллекции, выделенный элемент выделяется

1 Ответ

0 голосов
/ 23 октября 2019

Вы просто используете массив, который содержит значение true / false для каждой ячейки, и отправляете это значение в cellForIndexPath, и для каждого didSelect вы должны изменить значение в массиве и перезагрузить представление коллекции.

...