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 et la fonction qui téléchargera l'image p> cellfeforitematidexpath code> p>
3 Réponses :
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 Également, réinitialiser l'image dans la meilleure solution avec des images asynchronisées pour avoir la cache p> Après le chargement a été terminé, enregistrez l'image: p> et la prochaine fois, lorsque la cellule apparaît, l'image est déjà existante dans Si oui, utilisez l'image du cache, sinon, téléchargez une image
Le code devrait ressembler à ceci: p> indéniables code>. prépareforruse code> p> ImageCache code> p>
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")
}
Les cellules sont réutilisées. Premier réinitialiser le
radioimgview.image code> ànil code> (ou un espace réservé).@Larme a essayé cela, mais pas de chance, pourriez-vous donner un exemple pour cela.