2016-05-05 5 views
3

Ich versuche ein tallleview zu erstellen, in dem jede Zeile eine Unterliste anzeigen kann, wenn sie angetippt wird. Dazu aktualisiere ich das Datamodel und rufeUITableView mit selbstbemessendem insertRowsAtIndexPaths ändert contentOffset

an. Die Animation findet statt, solange die Zeilen sichtbar sind. Die hinzugefügten Zellen werden nach der Animation korrekt angezeigt, während die Animation der Tabellenansicht jedoch manchmal nach oben scrollt. Dies geschieht insbesondere im letzten Abschnitt der Tabellenansicht. Außerdem wird die Tabellenansicht immer nach oben gerollt, wenn die Tabelle so weit oben angezeigt wird, dass der obere Teil der Zelle über den eingefügten Zellen sichtbar ist.

Ich möchte den Contentoffset während der sichtbaren Animation beheben. Ich habe versucht, den Context-Offset innerhalb von begin updates und end updates zu setzen, aber das hat nicht funktioniert, weil die Animation nach oben geblättert hätte und Sie den Inhalt wieder in Position scrollen sehen würden.

Ich benutze automatisches Layout, um die Zellen selbst zu dimensionieren.

Wie kann ich den Inhalt Offset der Tabellenansicht beim Einfügen von sichtbaren Zellen konstant halten?

+0

Sie fragen die Tabellenansicht an die Spitze der hinzugefügten Zelle zu bewegen, wenn Sie UITableViewRowAnimationTop angeben:

Sie diese Zeilen Entfernen Sie einfach nicht verwenden selbst Ändern der Größe. Wenn das nicht passieren soll, müssen Sie eine neue Zeilenanimation auswählen. Sie möchten wahrscheinlich UITableViewRowAnimationNone. Alle Ihre Optionen sind hier dokumentiert https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#/apple_ref/c/tdef/UITableViewRowAnimation. – Dare

+0

Ich bin nicht so sicher, aber: Es könnte sein, dass Sie AutoLayout verwenden, aber Sie sind nicht Messaging AutoLayout, um sich nach jeder Animation anzupassen.Wenn das ist, was Sie falsch machen, dann sehen Sie dieses Video. Ich hoffe es hilft. https://www.youtube.com/watch?v=N5Ert6LTruY – Honey

+1

@ asma22 Ich verwende Auto-Layout, um meine Zellen zu Größe. Ich habe versucht und nannte selbst.tableview layoutIfNeeded innerhalb der Start/Ende-Updates-Block, aber es hat das Problem nicht gelöst. Wie würden Sie das automatische Layout informieren? – HasenBaumeister

Antwort

0

Ich habe das Problem herausgefunden. Die Selbstreduzierung ist die Ursache.

tableView.estimatedRowHeight = 123

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {

+0

Skalieren Ihre Zellen nach der Änderung automatisch? – Macondo2Seattle

+0

@ Macondo2Seattle: Ich berechnete die Höhe der Zellen mit 'systemLayoutSizeFittingSize'. – anhtu

Verwandte Themen