Вопрос

Я хотел бы полностью сбросить позицию прокрутки UITableView, чтобы при каждом его открытии отображались самые верхние элементы. Другими словами, я хотел бы прокручивать табличное представление к вершине каждый раз, когда оно открывается.

Я попытался использовать следующий фрагмент кода, но похоже, что я неправильно понял документацию:

- (void)viewWillAppear:(BOOL)animated {
    [tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:NO];
}

Это неправильный подход?

Это было полезно?

Решение

Август получил метод, специфичный для UITableView. Еще один способ сделать это:

[tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];

Этот метод определен в UIScrollView, родительском классе для UITableView. В приведенном выше примере показано, как прокрутить до поля 1x1 в 0,0 - в верхнем левом углу, другими словами.

Другие советы

Метод, который вы используете, прокручивает (как следует из названия метода) ближайшую выбранную строку. Во многих случаях это не будет верхний ряд. Вместо этого вы хотите использовать либо

scrollToRowAtIndexPath:atScrollPosition:animated:

или

selectRowAtIndexPath:animated:scrollPosition:

где вы используете путь индекса строки, к которой хотите перейти. Второй метод фактически выбирает строку, первый метод просто прокручивает ее.

Я закончил тем, что сделал:

Swift 4

self.tableView.contentOffset = CGPoint.zero
DispatchQueue.main.async {
    self.tableView.reloadData()
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top