-2
votes

Uicollectionviewcell image recharger la question après l'appel de l'API

J'essaie de charger une image pour la cellule particulière pour laquelle IndexPath L'URL est présente. Avoir une fonction pour télécharger l'image et l'envoyer via la méthode de rappel, mais après le rappel, les autres cellules sont également chargées par l'image téléchargée. Merci à Adv.

Voici l'échantillon de code. Dans la méthode cellfeforitematidexpath xxx

et la fonction qui téléchargera l'image xxx


2 commentaires

Les cellules sont réutilisées. Premier réinitialiser le radioimgview.image à nil (ou un espace réservé).


@Larme a essayé cela, mais pas de chance, pourriez-vous donner un exemple pour cela.


3 Réponses :


0
votes

Les cellules sont réutilisées à chaque fois, vous avez également un appel ASYNC dans le contrôleur. Dans l'achèvement du téléchargement, vous devez recharger la cellule par indéniables .

Également, réinitialiser l'image dans prépareforruse xxx

la meilleure solution avec des images asynchronisées pour avoir la cache xxx < / pré>

Après le chargement a été terminé, enregistrez l'image: xxx

et la prochaine fois, lorsque la cellule apparaît, l'image est déjà existante dans ImageCache

Si oui, utilisez l'image du cache, sinon, téléchargez une image Le code devrait ressembler à ceci: xxx


0 commentaires

1
votes

Vous devez réinitialiser image code> avant de réutiliser la cellule, car il est réutilisé avec une image précédente avant que Nouveau soit téléchargé. De plus, vous devez comparer l'URL sauvegardée avec URL en rappel, car le rappel peut revenir lorsque la cellule est réutilisée.

let stationCollectionViewcell : StationCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "stationCell", for: indexPath) as! StationCollectionViewCell

if imageURL.contains("http") {
   let url = URL(string: station.imageURL)!
   self.loadImageWithURL(url: url) { (image, callbackUrl) in
       guard url == callbackUrl else { return }
       stationCollectionViewcell.radioImgView.image = image
   }
} else if imageURL != "" {
   stationCollectionViewcell.radioImgView.image = UIImage(named: "station-therockfm")
} else {
   stationCollectionViewcell.radioImgView.image = UIImage(named: "stationImage")
}


0 commentaires

0
votes

J'espère que cela va courir bien. xxx initialiser votre instance avec cette classe. xxx


0 commentaires