Как исправить порядок ячеек в uicollectionview

#swift #uicollectionview

#быстрый #uicollectionview ( пользовательский просмотр ) #swift #uicollectionview

Вопрос:

У меня есть ViewController с CollectionView — 15 ячеек, все одного типа. Внутри ячейки находится кнопка с номером в названии или висячий замок (заблокированная глава). Когда я впервые загружаю это представление, все в порядке, и ячейки расположены в правильном порядке (1-15). Когда я нажимаю на кнопку, открывается новый вид с главой. Когда я вернусь к предыдущему просмотру из завершенной главы, мне нужно разблокировать следующую (изменить ее название на номер, отключить изображение замка и включить взаимодействие с пользователем). Я вызываю эту функцию:

 func updateButtons() {
        for i in 0..<chapterCollectionView.visibleCells.count {
            if let cell = chapterCollectionView.visibleCells[i] as? ExampleCollectionViewCell {
                if i <= PLAYERS[ACTUAL_PLAYER].progress {
                    cell.button.setTitle(String(i   1), for: .normal)
                    cell.button.isUserInteractionEnabled = true
                    cell.button.setImage(nil, for: .normal)
                } else {
                    cell.button.setTitle("", for: .normal)
                    cell.button.isUserInteractionEnabled = false
                    if self.view.traitCollection.horizontalSizeClass == .regular amp;amp; self.view.traitCollection.verticalSizeClass == .regular {
                        cell.button.setImage(UIImage(named: "padlock1"), for: .normal)
                    } else {
                        cell.button.setImage(UIImage(named: "padlock"), for: .normal)
                    }
                }
            }
        }
  

Но когда я пытаюсь, все кнопки меняют свое положение случайным образом. Есть ли способ исправить их порядок? Ссылки на изображения есть в комментарии.

Комментарии:

1. ссылки на изображения: imgur.com/bAlYtv6 , imgur.com/hIVU4Ks

2. Вы перезагружаете collectionview, это лучше, потому что ячейки используются повторно.

3. перезагрузить с помощью reloadData()?

Ответ №1:

reloadData() работает совместно с collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell функцией. Спасибо Ларме