J'ai migré mon code d'application ios vers Swift 4 et la méthode de rechargement des données dans mes vues de collection ne fonctionne pas. J'ai cherché et essayé beaucoup de choses mais personne n'a travaillé. Cela fonctionnait parfaitement pendant plus d'un mois dans Swift 3, donc je ne sais pas ce qui se passe.Les données de rechargement UICollectionView ne fonctionnent pas dans swift 4
Ce code est pour l'un des cas:
private func setLevelLessons(){
let operationsDB = DBOperations()
self.indexInformation = operationsDB.getIndex(forLevel: self.currentLevel)
self.numLessons = (self.indexInformation?.count)!
DispatchQueue.main.async {
self.lessonsCollectionView.reloadData()
}
}
J'appelle cette fonction lorsque clique sur un bouton. Quand on clique, j'obtiens des données de la base de données et je recharge la vue de la collection. J'ai vérifié si les données sont correctes, donc ce n'est pas le problème.
I imprimé éléments lorsque la méthode suivante est appelée, et est appelé dans la première et la deuxième clic (deuxième pas nécessaire dans le bouton, peu importe où dans l'écran)
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
Qu'est-ce qui pourrait arriver?
Vérifiez votre compteur 'numOfRowAtIndexPath' retour –
@SalmanGhumsani Cette valeur est correcte, je l'obtenir de variable' numLessons'. – CipherCit
J'ai rencontré un effet similaire et pour moi, j'ai travaillé _ [collectionView.collectionViewLayout invalidateLayout] _ avant _ [collectionView reloadData] _. Dans mon cas le collectionview-viewcontroller (obj-c) est un contrôleur de vue enfant d'un contrôleur swift-view. – Apoc