Как сбросить положение прокрутки UITableView? - PullRequest
16 голосов
/ 21 ноября 2008

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

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

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

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

Ответы [ 3 ]

33 голосов
/ 21 ноября 2008

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

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

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

6 голосов
/ 21 ноября 2008

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

scrollToRowAtIndexPath:atScrollPosition:animated:

или

selectRowAtIndexPath:animated:scrollPosition:

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

0 голосов
/ 03 мая 2018

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

Swift 4

self.tableView.contentOffset = CGPoint.zero
DispatchQueue.main.async {
    self.tableView.reloadData()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...