Ich arbeite an einer App, in der ich Bilder, fast so groß wie die Bildschirmgröße, in einem UITableView mit benutzerdefinierten Zellen anzeigen möchte. Die Bilder laden gut, ein bisschen langsam, aber sie laden, aber wenn ich in der TableView blättern, erscheinen sie in der falschen Zelle (zum Beispiel Bild1 in Zelle5, wo Bild5 erscheinen soll) nach 1 oder 2 Sekunden erscheint das korrekte Bild. Um nicht zu viel Datenverkehr zu haben, dachte ich über einen "Cache" -ähnlichen URL / Bildspeicher wie folgt nach:
%Vor%Die URL und der Rest der Daten, die ich benötige Ich lade über AFNetwork wie folgt:
%Vor%So fülle ich die TableViewCell:
%Vor%Danke für hilfreiche Tipps
Die Tabellenansichtszellen werden aus Gründen der Leistung wiederverwendet. Daher behalten sie das zuvor verwendete Bild in der UIImageView-Datei bei, wenn Sie vor dem Laden des Abbilds nichts festlegen.
Kurz bevor Sie startLoadingImageWithUrl aufrufen, können Sie das Anfangsbild von imageView zuerst mit einem Platzhalterbild festlegen oder den Ladeindikator oben auf dem imageView hinzufügen. Denken Sie jedoch daran, den Ladeindikator zu entfernen, wenn das reale Bild geladen ist.
%Vor%Und wenn das Bild in der falschen Zelle erscheint, nachdem das Bild geladen wurde, liegt das daran, dass Sie das Element, das eine wiederverwendbare Zelle ist, als Parameter in startLoadingImage und didLoadImage übergeben. Versuchen Sie stattdessen, indexPath zu übergeben und suchen Sie die richtige Zelle mit dem IndexPath, um die Zellenbildansicht zu aktualisieren.
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
Sie schreiben einfach diesen Code, wo Sie das Bild zuweisen, wenn es nicht geladen dann
%Vor%wenn es geladen ist, dann weisen Sie das Bild zu wenn sonst so
%Vor%Tags und Links uitableview ios uiimage