UITableView reloadRowsAtIndexPaths führt die Animation aus, wenn dies nicht der Fall ist

8

Ich verwende ein UITableView in meiner iOS App und habe kürzlich ein seltsames Problem festgestellt.

Angenommen, meine Tabelle ist folgendermaßen aufgebaut:

%Vor%

(Beachten Sie, dass Abschnitt 2 keine Zeilen enthält)

Ich führe Updates für die Zeilen in meiner Tabelle über

durch %Vor%

Ich möchte nicht, dass Animationen stattfinden. Ich möchte nur, dass die Zeile aktualisiert wird. Das Problem ist, dass diese Strategie für alle Zeilen und Abschnitte in der Tabelle mit Ausnahme von , Abschnitt 3, Zeile 1, funktioniert: die erste Zeile des letzten Abschnitts. Wenn ich diese Zeile (die in der Tat die richtigen indexPaths verwendet) aktualisiere, macht die Zeile, statt eine Animation zu erhalten, diesen kleinen Sprung, als ob sie in einer neuen Zeile gleitet, um die alte Zeile oder etwas zu ersetzen. Die Reihe gleitet leicht nach oben und dann wieder nach unten, als würde ich eine Reihe einfügen. Ich vermute, es hat etwas mit den Header-Berechnungen zu tun, aber ich gebe korrekte Werte für heightForHeaderInSection zurück.

Hat jemand dieses Verhalten gesehen?

    
jimt 29.12.2010, 21:16
quelle

2 Antworten

0

Ich frage mich, ob die beginUpdates und endUpdates in diesem Reload Only-Szenario notwendig sind.

    
VdesmedT 30.12.2010 10:14
quelle
-1

Ich hatte das gleiche Problem. Die Lösung war, die Zelle aus der Tabelle zu holen mit:

UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:indexPath]

und aktualisieren Sie es dann manuell mit einer benutzerdefinierten Setup-Methode oder einfach mit:

[cell setNeedsLayout]

Weitere Informationen finden Sie unter

Grafische Panne UITableView reloadRowsAtIndexPaths

    
martin 19.03.2014 21:30
quelle

Tags und Links