Странное поведение UITableView scrollToRowAtIndexPath: - PullRequest
0 голосов
/ 10 июля 2010

Я должен установить начальную позицию прокрутки моего UITableView для строки, отличной от первой (например, первая строка второго раздела).

На мой взгляд, контроллер viewDidLoad Я пишу:

- (void)viewDidLoad
{
    // self.view is a container view, not UITableView
    [super viewDidLoad];
    [table scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]
       atScrollPosition:UITableViewScrollPositionTop animated:NO];
}

Когда экран загружается, положение прокрутки не устанавливается немедленно. В противном случае, если для параметра animated установлено значение YES, позиция устанавливается немедленно без анимации. Что происходит?

Как правильно установить начальную позицию строки для UITableView?

Ответы [ 3 ]

0 голосов
/ 10 июля 2010

Это не будет работать в viewDidLoad или viewWillAppear, поскольку таблица, скорее всего, к тому времени еще не была заполнена (по крайней мере, в моем случае это не так)

Попробуйте вместо этого положить его в NSTimer после загрузки таблицы и затем вызвать его.

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

0 голосов
/ 10 апреля 2012

Лучшее место должно быть ViewDidAppear. Кроме того, вы должны вызвать метод прокрутки в cellWillDisplay, чтобы убедиться. Не забудьте проверить indexPath перед вызовом метода прокрутки

0 голосов
/ 10 июля 2010

Просто выстрел в темноте, но вы пытались поместить этот код в viewDidAppear {}?

...