Приложение для iPhone Прокрутите до заданной позиции в UITableView при загрузке страницы - PullRequest
0 голосов
/ 12 августа 2011

Я хочу прокрутить вниз до указанной строки в моем табличном представлении. если я использую следующий код внутри события кнопки, он работает правильно.

[planTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:7 inSection:0 ] atScrollPosition:0 animated:YES];

Но я хочу сделать это сразу после загрузки страницы. Размещение вышеуказанного кода внутри viewDidLoad или viewDidAppear не сработало.

Любая помощь ??

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

это своего рода хак, но вы также можете захотеть выполнить -scrollToRowAtIndexPath: atScrollPosition: animated: с некоторой задержкой, потому что при вызове либо -viewDidLoad, либо -viewDidAppear: строки представления таблицы еще не созданы, поэтому ничего не происходитдля прокрутки до.

так:

- (void)doScrolling
{
    [planTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:7 inSection:0 ] atScrollPosition:0 animated:YES];
}

и в -viewDidAppear:

[self performSelector:@selector(doScrolling) withObject:nil afterDelay:0.3];

также обратите внимание на аргумент atScrollPosition:.фактически это перечисление:

typedef enum {
   UITableViewScrollPositionNone,
   UITableViewScrollPositionTop,
   UITableViewScrollPositionMiddle,
   UITableViewScrollPositionBottom
} UITableViewScrollPosition;

, поэтому, если строка видима и пропущена 0, прокрутка не будет выполняться

2 голосов
/ 12 августа 2011

UITableView является подклассом UIScrollView, поэтому вы можете просто установить contentOffset вашего tableView в viewDidLoad: или viewWillAppear.

Если вам нужно прокрутить 7 ячеек табличного представленияуменьшите длину этих 7 ячеек (по умолчанию 44 пикселя, но если у вас есть пользовательские высоты ячеек, вам нужно учесть это в) и установите contentOffset в CGPointMake(0, *calculated height*).В случае 7 ячеек высотой 44px это будет CGPointMake(0, 308).

...