Gibt es eine Möglichkeit herauszufinden, welche UITableViewCell
sich oben im Bildlauffenster befindet?
Ich möchte die aktuelle Bildlaufposition erhalten, damit ich sie beim Beenden der App speichern kann. Wenn die App gestartet wird, möchte ich zu der Position scrollen, an der sie sich beim letzten Beenden befand.
iphone
objective-c
uitableview
uiscrollview
Progrmr
quelle
quelle
Die akzeptierte Lösung funktioniert nur, wenn Sie die Größe aller Elemente der Tabellenansicht kennen. Bei automatischer Größenanpassung / geschätzter Größe ist dies nicht immer der Fall.
Eine Alternative besteht darin, das erste sichtbare Element zu speichern und dorthin zu scrollen.
Sie können den ersten sichtbaren Elementindexpfad erhalten mit:
Scrollen Sie dann wie folgt:
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
quelle
Stellen Sie sicher, dass Sie in viewWillAppear und nicht in viewDidLoad (getestetes iOS 9) laden können. ViewWillAppear ist, wenn die Ansicht das Layout beendet hat - es gibt Unterschiede im Ergebnis.
-(void) viewWillAppear:(BOOL)animated { NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults]; [self.tableView setContentOffset:CGPointMake(0, [lightData floatForKey:@"yValue"])]; } -(void) viewWillDisappear:(BOOL)animated { NSUserDefaults *lightData = [NSUserDefaults standardUserDefaults]; [lightData setFloat:self.tableView.contentOffset.y forKey:@"yValue"]; [lightData synchronize]; }
quelle