Ich habe einen Brauch UITableView
mit UITableViewCell
s. Jeder UITableViewCell
hat 2 Tasten. Durch Klicken auf diese Schaltflächen wird ein Bild in einer UIImageView
Zelle geändert .
Ist es möglich, jede Zelle einzeln zu aktualisieren, um das neue Bild anzuzeigen? Jede Hilfe wird geschätzt.
objective-c
uitableview
Assistent von iOS
quelle
quelle
[NSArray arrayWithObject:]
stattdessen verwenden wollen.beginUpdates
undendUpdates
unnötig.Ich habe versucht, nur anzurufen
-[UITableView cellForRowAtIndexPath:]
, aber das hat nicht funktioniert. Aber das Folgende funktioniert zum Beispiel für mich. Ichalloc
undrelease
dieNSArray
für enge Speicherverwaltung.quelle
Schnell:
quelle
reloadRowsAtIndexPaths:
ist in Ordnung, wird aber dennochUITableViewDelegate
Methoden zum Feuern zwingen .Der einfachste Ansatz, den ich mir vorstellen kann, ist:
Es ist wichtig , dass Sie Ihre
configureCell:
Implementierung im Hauptthread aufrufen , da sie im Nicht-UI-Thread nicht funktioniert (dieselbe Geschichte mitreloadData
/reloadRowsAtIndexPaths:
). Manchmal kann es hilfreich sein, Folgendes hinzuzufügen:Es lohnt sich auch, Arbeiten zu vermeiden, die außerhalb der derzeit sichtbaren Ansicht ausgeführt werden:
quelle
Wenn Sie benutzerdefinierte TableViewCells verwenden, wird die generische
beantwortet diese Frage nur dann effektiv, wenn Sie die aktuelle Ansicht verlassen und zurückkehren. Die erste Antwort auch nicht.
Verwenden Sie den folgenden Code, um Ihre erste Tabellenansichtszelle erfolgreich neu zu laden, ohne die Ansicht zu wechseln :
Fügen Sie die folgende Aktualisierungsmethode ein, die die obige Methode aufruft, damit Sie nur die oberste Zelle (oder die gesamte Tabellenansicht, falls gewünscht) neu laden können:
Nachdem Sie dies sortiert haben,
viewDidLoad
fügen Sie in Ihrem Bereich Folgendes hinzu:Sie haben jetzt eine benutzerdefinierte Funktion zum Aktualisieren von Tabellen, mit der die oberste Zelle neu geladen wird. Fügen Sie zum erneuten Laden der gesamten Tabelle die hinzu
[self.tableView reloadData];
zu Ihrer neuen Aktualisierungsmethode.Wenn Sie die Daten bei jedem Ansichtswechsel neu laden möchten, implementieren Sie die folgende Methode:
quelle
Swift 3:
quelle
Um diese Antworten mit der neuen Literal-Syntax in iOS 6 leicht zu aktualisieren, können Sie Paths = @ [indexPath] für ein einzelnes Objekt oder Paths = @ [indexPath1, indexPath2, ...] für mehrere Objekte verwenden.
Persönlich habe ich festgestellt, dass die wörtliche Syntax für Arrays und Wörterbücher äußerst nützlich ist und viel Zeit spart. Zum einen ist es einfach einfacher zu lesen. Und es macht eine Null am Ende jeder Liste mit mehreren Objekten überflüssig, was schon immer ein persönlicher Bugaboo war. Wir haben alle unsere Windmühlen zum Kippen, ja? ;-);
Ich dachte nur, ich würde das in die Mischung werfen. Ich hoffe es hilft.
quelle
Hier ist eine UITableView-Erweiterung mit Swift 5:
Rufen Sie an mit
quelle
Ich brauche die Upgrade-Zelle, möchte aber die Tastatur schließen. Wenn ich benutze
Die Tastatur verschwindet
quelle