Ich habe eine UITableView mit benutzerdefinierten Zellen. Ich lade Bilder mit Grand Central Dispatch asynchron. Alles funktioniert gut, aber wenn ich nach unten scrolle, werden zuvor geladene Bilder angezeigt, bis das neue Bild heruntergeladen wird. Hier ist mein Code:
%Vor%Irgendwelche Vorschläge geschätzt. P.S. Ich benutze die Zellen wieder
Anstatt die Zelle zu erfassen, müssen Sie den Indexpfad erfassen und dann die Zelle mithilfe von:
zurückholen %Vor%Auf diese Weise erhalten Sie, wenn die Zelle nicht auf dem Bildschirm angezeigt wird, die Null zurück und das Bild wird nicht auf die falsche Zelle gesetzt.
Die andere Sache, die du nach deinem dispatch_async()
hinzufügen musst ist cell.imageView.image=somePlaceholderImage
.
ZB:
%Vor% In deinem - (void)tableView:(UITableView *)aTableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
musst du das Bild löschen oder es auf deinen Spinner zurücksetzen. Da Tabellenansichtszeilen wiederverwendet werden, ist dies das Verhalten, das Sie sehen werden.
Tags und Links objective-c uitableview ios cocoa-touch