Ich habe einfache UITableView mit vielen Abschnitten und Zeilen. Abschnitte funktionieren gut. Aber manchmal nach dem Neuladen von Daten der Tabelle, Abschnitt Position ändern. Zum Beispiel war es passiert, wenn ich Tabs ändere. Was könnte das Problem sein?
Bild vor den geänderten Tabs:
Bild nach den geänderten Tabs:
Aktualisierung: Fügen Sie den folgenden Code hinzu:
%Vor%Das hilft mir.
Double reloadData
verursacht Flackern, während diese Lösung nicht funktioniert.
Es sieht aus wie das Problem in der geschätzten Höhe für Ihre Tabellenansichtszellen. Aufgrund von internen Optimierungen berechnet das System die Höhe der abwesenden Zellen basierend auf dem geschätzten Wert der Höhe, deshalb kann es Ihre Kopfzeilen auf falsch berechnete Höhe positionieren (wie echte Zellen größer oder kleiner als ihre geschätzte Größe). Dies geschieht normalerweise, wenn Sie reloadData()
in der Mitte der Liste aufrufen. Als eine angemessene Lösung sollten Sie vermeiden, reloadData()
aufzurufen, wenn Sie den Inhalt der Liste beispielsweise mit der zweiten Seite aktualisieren möchten. Du solltest also tableView.beginUpdates()
und verwenden
tableView.endUpdates()
und aktualisieren Sie die Objektgruppe für die Tabellenansicht. Es gibt auch eine neue Schließung API performBatchUpdates
(genau wie für UICollectionView
), aber es ist verfügbar von iOS 11.
Ich hoffe, es kann helfen, die richtige Lösung für Sie zu finden
In meinem Projekt ist dieser Fehler aufgetreten, wenn ich tableView
hochfahre, um mehr Daten anzufordern, und die Daten nach der Anforderung neu lade. Ich muss viele Abschnitte erstellen, nachdem ich die Daten angefordert habe, und es kann die Leistung beeinträchtigen, wenn ich reloadData
zweimal verwende. Mehr als, fand ich, dass, wenn ich die tableView
nach oben oder unten scrollte, die Position des HeaderView des Abschnitts richtig geht. Also behebe ich diesen Fehler (meine Bedingung) Ich fordere die Daten durch:
Die Lösungen hier haben mein Problem nicht gelöst, also lasse ich eine weitere mögliche Lösung, die mir geholfen hat.
Legen Sie die geschätzteSectionHeaderHeight fest. Es scheint, dass meine TableView nicht in der Lage war, das zu berechnen Ausgangslage meiner ersten Abteilung ohne sie.
Tags und Links uitableview swift ios9