IPhone SDK - Как прокрутить UITableView программно с помощью анимации?
Как мне прокрутить UITableView в определенную позицию с помощью анимации?
В настоящее время я использую этот код для перехода в позицию:
//tableController -> viewDidLoad
[self.tableView reloadData];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionTop
animated:YES];
Проблема с этим кодом заключается в том, что таблица переходит прямо в нужное положение без анимации. Есть ли способ включить анимацию или установить продолжительность?
Спасибо за любую помощь.
Ответы
Ответ 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]
.