Wie ein UITableView sagen, alle Zeilen vorab zu laden?
-
05-10-2019 - |
Frage
Gibt es eine Möglichkeit, ein UITableView zu sagen, alle Zeilen vorzuladen?
Der Tableview soll mehrere Kommentare zeigen (bis zu 80 Kommentare).
Also meine CommentCell einen Setter verwendet die Zelle einen spezifischen Kommentar anzupassen.
-(void)setComment:(Comment *)newComment {
if (newComment != comment) {
[comment release];
comment = [newComment retain];
/*
* set the cells view variables here
*/
}
}
Diese spezifische Setter dauert eine ganze Bündel Ressourcen zu verarbeiten und Scrollen ein bisschen laggy wird.
Ich verwende einen Kommentar spezifischen reuseIdentifier anstelle einer statischen cellIdentifier beim Aufruf
dequeueReusableCellWithIdentifier:
, um sicherzustellen, dass „newComment“ ist gleich den alten „Kommentar“.
Und in der Tat ist dies tut große Arbeit, wenn sie über Zellen Scrollen, die bereits geladen wurden.
Aber wenn zum ersten Mal durch die Kommentare Scrollen, es hinkt immer noch wie die Hölle.
Was mich zu meiner Frage führt:
Gibt es eine Möglichkeit, die Tableview zu sagen, alle Zellen vorzuladen? (Was ich bezweifle)
oder in
Muss ich meinen eigenen Cache zu implementieren, anstatt sich auf „dequeueReusableCellWithIdentifier:“
Lösung
Beachten Sie, dass Ihr Kommentar spezifischer reuseIdentifier könnte das sein, was alles verursacht, langsam zu gehen (oder zumindest, es ist nicht zu helfen). Der Grund, warum wir reuseIdentifier für UITableViewCells verwenden ist, weil, wenn Sie versuchen, jedes Mal eine neue Zelle man einen braucht zuzuteilen es nicht so performant ist, als ob Sie gerade Wiederverwendung ein, die bereits durchgeführt wurde.
Ich würde empfehlen, Pre-Computing Ihre Kommentare, so dass Sie nur Eigenschaften der Zellen festlegen können und die Wiederverwendung von Zellen, nachdem sie aus dem Tableview blättern.
Andere Tipps
Nein, müssen Sie Ihre Daten in Ihrer dataSource
vorzuladen. Setzen Sie einfach alles, was Sie in einem Array müssen und die Tabellenzellen aus dieser Reihe von vorinstallierten Objekten füllen.