Existe-t-il un moyen de savoir quel UITableViewCell
se trouve en haut de la fenêtre de défilement?
J'aimerais obtenir la position de défilement actuelle afin de pouvoir l'enregistrer à la fermeture de l'application. Lorsque l'application démarre, je veux faire défiler jusqu'à la position où elle se trouvait lors de sa dernière fermeture.
Vous pouvez facilement saisir le décalage exact de la vue de table en consultant sa propriété contentOffset
. Pour le défilement vertical, regardez:
tableView.contentOffset.y;
La solution acceptée ne fonctionne que si vous connaissez la taille de tous les éléments de la vue tabulaire. Avec un dimensionnement automatique/une taille estimée qui n'est pas toujours vrai.
Une alternative consiste à enregistrer le premier élément visible et à y accéder.
Vous pouvez obtenir le premier indexPath de l'élément visible avec:
savedIndex = tableView.indexPathsForVisibleRows?.first
Faites ensuite défiler jusqu'à celui-ci en faisant:
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
Assurez-vous que vous pouvez charger dans viewWillAppear et non viewDidLoad (testé iOS 9). ViewWillAppear est lorsque la vue a terminé la mise en page - il y a des différences dans le résultat.
-(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];
}