Swift ios 9: Abschnitt Header ändern Position nach dem Neuladen von Daten

7

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%     
Eduard Kornev 13.05.2016, 09:51
quelle

7 Antworten

6

Ich weiß, dass es ein alter Thread ist, aber deaktiviere die Adjust Scroll View Insets nicht. Ich hatte dieses Problem und löste es durch zweimaliges Laden der Tabelle.

    
Hebbian 09.06.2016, 05:52
quelle
14
%Vor%

Das hilft mir.

Double reloadData verursacht Flackern, während diese Lösung nicht funktioniert.

    
user3480295 09.10.2016 10:03
quelle
3

Der Aufruf von reloadData () zweimal funktioniert auch für mich, aber ich würde vorschlagen, tableView.layoutSubviews () nach reloadData () aufzurufen, was auch für mich funktioniert.

    
Haoxin Li 05.05.2017 23:16
quelle
1

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

    
alokard 07.11.2017 16:03
quelle
0

Dies liegt an der UI-Viewcontroller-Eigenschaft. Bitte wählen Sie zuerst UIViewController From Storyboard, Attribut Inspector

    
Sucharu Hasija 13.05.2016 09:57
quelle
0

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:

%Vor%     
guozqzzu 12.08.2016 10:33
quelle
0

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.

    
Leonardo 25.01.2017 11:18
quelle

Tags und Links