iphone - example - uitableviewcell lifecycle
¿Cómo puedo obtener la posición de desplazamiento UITableView para poder guardarlo? (3)
Asegúrese de que puede cargar en viewWillAppear y no viewDidLoad (probado iOS 9). ViewWillAppear es cuando la vista ha terminado el diseño: hay diferencias en el resultado.
-(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];
}
¿Hay alguna forma de averiguar qué UITableViewCell
encuentra en la parte superior de la ventana de desplazamiento?
Me gustaría obtener la posición de desplazamiento actual para poder guardarla cuando la aplicación salga. Cuando la aplicación comience, quiero desplazarme a la posición en la que estaba cuando salió por última vez.
La solución aceptada solo funciona si conoce el tamaño de todos los elementos de la vista de tabla. Con tamaño automático / tamaño estimado que no siempre es cierto.
Una alternativa es guardar el primer elemento visible y desplazarse hacia él.
Puede obtener el primer índice de elemento visiblePath con:
savedIndex = tableView.indexPathsForVisibleRows?.first
Luego desplácese hacia él haciendo:
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
Puede obtener fácilmente el desplazamiento exacto de la vista de tabla mirando su propiedad contentOffset
. Para el desplazamiento vertical, mira:
tableView.contentOffset.y;