Как перезагрузить данные UIcollectionView правильно? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть массив UIImage по умолчанию и массив имен для метки и imageView в моей ячейке collectionView.UIcollectionviews данные не изменятся после того, как я вызову функцию reloadData() и поменяю источники по умолчанию для метки и imageView, если только я не прокручиваю каждую ячейку из экрана и не прокручиваю назад, чтобы увидеть, что данные изменились.

@IBOutlet weak var mycollectionview: UICollectionView!

var castNames = ["", "", "", "", ""]

var collectionviewimages = [UIImage(named: "pic"), UIImage(named: "pic"), UIImage(named: "pic"), UIImage(named: "pic"), UIImage(named: "pic")]

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

    return castNames.count

    }

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: 
    "customcell", for: indexPath) as! MyCollectionViewCell

    cell.Initialize(image: collectionviewimages[indexPath.row]!, name: 
    castNames[indexPath.row])

    return cell
    }
}

, нажав кнопку, я получаю несколько Json и анализирую их, чтобы изменить источники данных по умолчанию collectionView.после изменения, как я хочу, я называю эту функцию:

mycollectionview.reloadData()

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Попробуйте добавить это:

collectionView.delegate = self

collectionView.datasource = self

0 голосов
/ 02 апреля 2019

Всегда используйте перезагрузку Collectionview в главном потоке.

dispatchQueue.main.async {
   self.mycollectionview.reloadData()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...