Получите UITableView для прокрутки вверх снизу / привязка вниз, а не сверху - PullRequest
1 голос
/ 11 января 2010

У меня есть табличное представление, которое во многих случаях будет иметь только одну или две ячейки, которые не заполняют экран. В этом случае я бы хотел, чтобы клетки сидели внизу, а не сверху. Другими словами, они должны «привязываться» к нижней части таблицы.

Я могу заставить табличное представление прокрутить их до дна следующим образом:

  CGPoint bottomOffset = CGPointMake(0, [self.tableView contentSize].height - self.tableView.frame.size.height);
  [self.tableView setContentOffset:bottomOffset animated:NO];

Однако, это только частично успешно. Во-первых, это не работает, если я помещаю его в viewDidLoad или viewWillAppear, только в viewDidAppear, что означает, что пользователь сначала видит табличное представление с ячейками вверху, а затем они перемещаются вниз. Во-вторых, если они прокручивают табличное представление, то когда оно отпускается, оно автоматически «привязывается» к вершине.

Кто-нибудь знает, как изменить это поведение?

1 Ответ

4 голосов
/ 11 января 2010

Один из вариантов - изменить размер самого UITableView в зависимости от того, сколько строк вы будете отображать. Предполагая, что ваш UITableViewDelegate реализует heightForRowAtIndexPath, можно затем установить высоту UITableView в методе viewWillAppear, умножив количество строк на высоту каждой строки.

Примерно так:

CGRect frame = [myTableView frame];

frame.size.height = [[myTableView dataSource] tableView: myTableView numberOfRowsInSection: 0] *
                    [[myTableView delegate] tableView: myTableView heightForRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]];

[myTableView setFrame: frame];

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...