UITableView scrollt zu einer bestimmten Position

8

Ich verwende iPhone SDK 3.1.3. Ich habe ein UITableViewController , das Daten von einem anderen Controller bekommt. Die Tabellenansicht wird als Unteransicht zur Hauptansicht hinzugefügt, aber der Rahmen wird so eingestellt, dass er nicht sichtbar ist. Der Tabellenansichtsrahmen wird aktualisiert und über die Hauptansicht verschoben, indem Sie auf eine Schaltfläche tippen.

Die Tabellenansicht erscheint und ich scrolle zur letzten Zeile. Wenn ich die letzte Zeile auswähle, lade ich die Tabelle mit mehr Daten neu. Die Tabelle wird mit mehr Daten aktualisiert. Alles funktioniert gut, außer die Scroll-Position ist immer oben.

Ich brauche die Scroll-Position, um die letzte Zeile zu sein, auf die ich geklickt habe, um mehr Daten zu laden. Ich speichere die Bildlaufposition und rufe nach dem Laden weiterer Daten den folgenden Code auf. Es wird ohne Probleme ausgeführt, aber die Scroll-Position ist immer die oberste.

%Vor%

Das obige scheint keine Wirkung zu haben. ViewWillAppear: ViewDidAppear: feuert nicht und mir wird gesagt, dass wenn der View-Controller in Code instanziiert wird, was der Fall ist, diese nicht ausgelöst werden. Bitte helfen Sie mir herauszufinden, wie und wann die Scroll-Position eingestellt werden soll, nachdem die Tabelle neu geladen wurde ( [theTableView reloadData] ), so dass sie in der Zeile ist, auf die ich geklickt habe.

Code zum erneuten Laden der Tabellenansicht & amp; scrollen

%Vor%     
Dave 21.04.2010, 18:29
quelle

3 Antworten

29

Dies schien den Trick zu tun.

%Vor%     
Dave 21.04.2010, 21:13
quelle
10

Es wird besser aussehen und die Bildlaufposition bleibt bestehen, wenn Sie die Zeilen einfügen können, anstatt reloadData aufzurufen.

%Vor%

Anstatt UITableView-Scrolling zu verwenden, können Sie UIScrollView scrollen:

%Vor%

Dann wiederherstellen:

%Vor%     
drawnonward 21.04.2010 21:10
quelle
0

Wenn das der tatsächliche Code ist und angenommen wird, dass dieTableView nicht null ist, sollten Sie eine Warnung erhalten, die sagt "Kann nicht antworten auf ..." weil scrollToRowAtIndexPath falsch buchstabiert ist.

Zweitens erwartet der Parameter atScrollPosition eine UITableViewScrollPosition Aufzählungswert, der angibt, wo auf dem Bildschirm die Zielzeile positioniert werden soll.

Versuchen Sie Folgendes:

%Vor%     
DyingCactus 21.04.2010 18:45
quelle