Как сделать конкретный UITableViewCell видимым на экране, имея больше строк в UITableView - PullRequest
8 голосов
/ 06 февраля 2012

У меня есть 20 строк в табличном представлении, и я разработал (или, скажем, изменил размер) UITableView на половине экрана (используя IB), а на половине экрана я показываю материал, связанный с конкретным UITableViewCell.Какие ячейки будут отображаться на полуэкране, определяется временем выполнения.Я хочу, чтобы ячейка была видимой при загрузке представления, скажем, второй последней ячейки.

Как мне этого добиться?

Ответы [ 4 ]

18 голосов
/ 05 сентября 2013

Я обнаружил, что самый простой способ убедиться, что вся ячейка видима, это попросить табличное представление убедиться, что прямоугольник ячейки видим:

[tableView scrollRectToVisible:[tableView rectForRowAtIndexPath:indexPath] animated:YES];

Простой способ проверить это - просточтобы поместить это в -(void)tableView:didSelectRowAtIndexPath: - касание любой ячейки затем прокрутит ее на место, если она частично скрыта.

12 голосов
/ 06 февраля 2012

UITableView классные предложения:

-(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath
             atScrollPosition:(UITableViewScrollPosition)scrollPosition
                     animated:(BOOL)animated;

что, кажется, то, что вы ищете.

Объект NSIndexPath может быть построен с использованием:

+(NSIndexPath *)indexPathForRow:(NSInteger)row inSection:(NSInteger)section;
8 голосов
/ 06 февраля 2012

Попробуйте scrollToRowAtIndexPath: atScrollPosition: animated: :

NSUInteger indexArray[] = {1,15};
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexArr length:2];
[yourTableView scrollToRowAtIndexPath:indexPath atScrollPosition: UITableViewScrollPositionTop animated:YES];
3 голосов
/ 15 января 2018

Swift 4 версия ответа Нико ТеВинкеля, которая мне больше всего понравилась:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.scrollToRow(at: indexPath, at: .middle, animated: true) //scrolls cell to middle of screen
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...