Ich habe ein Problem mit SDWebImage, um Bilder in eine UIImageView in einer benutzerdefinierten UITableViewCell zu laden. Dies ist mein Code beim UITableView-Delegaten:
%Vor%Und hier ist mein Code für loadFromDictionary:
%Vor% Nun ist das Problem, wenn ich scrolle, bevor einige Bilder fertig geladen werden. Nehmen wir zum Beispiel an, ich sehe die ersten 8 Zeilen und die Zeilen 1, 2 und 3 laden immer noch ihre Bilder, jetzt scrolle ich zu 9-16, ich sehe die defaultAvatar
für alle und nach ein paar Sekunden (d Raten Sie, wenn die Bilder der Zeilen 1, 2 und 3 den Download beenden), die Bilder auf den Zellen 9, 10 und 11 ändern sich zu denen, die zu 1,2 und 3 gehören.
Ich weiß nicht, ob es eine Möglichkeit gibt, das Herunterladen der Bilder zu stoppen, wenn ich die Zelle wiederverwende oder so etwas.
Danke und Entschuldigung für mein Englisch!
Wenn Sie Ihr UITableViewDelegate für Ihre Tabelle festgelegt haben, können Sie die Delegate-Methode verwenden:
- tableView:didEndDisplayingCell:forRowAtIndexPath:
, um das Bild auf NULL (oder den Standardwert) zu setzen, wenn die Zelle vom Bildschirm abrollt.
Und da Sie SDWebImage verwenden, könnte das Abbrechen so einfach sein wie " cancelCurrentImageLoad
" in der Bildansicht der Zelle.
Überschreibe prepareForReuse
-Methode in deiner Zellenklasse und annulliere alle Ladungen dort. Vergiss nicht, super
Ich erhielt leere Bilder mit der akzeptierten Antwort und da die Bilder, die ich lade, klein sind, wollte ich die Bilder im Hintergrund zwischenspeichern lassen und die Ladung nicht abbrechen.
prepareForReuse
So:
%Vor%und das:
%Vor% Rufen Sie einfach sd_cancelCurrentImageLoad
auf und setzen Sie [imageView setImage:nil]
vor Aufruf sd_setImageWithURL
.
Tags und Links uitableview ios sdwebimage