Как я могу получить позицию прокрутки UITableView, чтобы я мог ее сохранить?
есть ли способ узнать, какой UITableViewCell
в верхней части окна прокрутки?
Я хотел бы получить текущую позицию прокрутки, чтобы я мог сохранить ее при выходе из приложения. Когда приложение запускается, я хочу прокрутить до позиции, в которой оно было, когда оно в последний раз выходило.
3 ответа:
вы можете легко захватить точное смещение представления таблицы, Глядя на его
contentOffset
собственность. Для вертикальной прокрутки, посмотрите на:tableView.contentOffset.y;
принятое решение работает только в том случае, если вы знаете размер всех элементов табличного представления. С автоматической калибровкой / расчетным размером, что не всегда верно.
один из вариантов-сохранить первый видимый элемент и прокрутить его.
вы можете получить первый видимый элемент indexPath с помощью:
savedIndex = tableView.indexPathsForVisibleRows?.first
затем выделите его:
tableView.scrollToRowAtIndexPath(savedIndex, atScrollPosition: .Top, animated: false)
убедитесь, что вы можете загрузить в viewWillAppear, а не viewDidLoad (проверено iOS 9). ViewWillAppear - это когда вид закончил макет-есть различия в результате.
-(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]; }