Подтвердить что ты не робот

IPhone SDK - Как прокрутить UITableView программно с помощью анимации?

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

В настоящее время я использую этот код для перехода в позицию:

 //tableController -> viewDidLoad
 [self.tableView reloadData];
 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
 [self.tableView scrollToRowAtIndexPath:indexPath
                       atScrollPosition:UITableViewScrollPositionTop
                               animated:YES];

Проблема с этим кодом заключается в том, что таблица переходит прямо в нужное положение без анимации. Есть ли способ включить анимацию или установить продолжительность?

Спасибо за любую помощь.

4b9b3361

Ответ 1

Это отлично работает для меня:

-(void) viewDidAppear:(BOOL)animated{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:n inSection:0];
    [self.tableView scrollToRowAtIndexPath:indexPath
                    atScrollPosition:UITableViewScrollPositionTop
                            animated:YES];

}

Чтобы убедиться, что это вызвано только один раз, вы можете сделать такую ​​проверку:

if(!isInitialized){
   isInitialized = YES;
   ....
}

Ответ 2

Попробуйте прокомментировать вызов reloadData. Если я правильно понимаю ваш вопрос, и вы находитесь в viewDidLoad, вам все равно не нужно его вызывать.

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

Ответ 3

У меня есть два предложения для вас:

  • Вы используете свое приложение на симуляторе или на iPhone? Я заметил, что некоторые анимации ведут себя по-разному в симуляторе.

  • Возможно ли, что вы вызываете scrollToRowAtIndexPath: atScrollPosition: анимированные дважды в быстрой последовательности? Это может "запутать" анимацию. Вы должны вызывать эту функцию только один раз при обработке данного события.

Ответ 4

Я знаю, может быть, это слишком поздно, но, возможно, это помогает другим, теперь вы можете прокручивать таблицу только с помощью [tableView scrollsToTop].