Как прокрутить до нижней части UITableView на iPhone, прежде чем появится представление - PullRequest
129 голосов
/ 05 мая 2010

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

В настоящее время у меня есть следующая функция

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[log count]-1 inSection:0];
[self.table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];

log - изменяемый массив, содержащий объекты, составляющие содержимое каждой ячейки.

Приведенный выше код прекрасно работает в viewDidAppear, однако это имеет неприятный побочный эффект: отображение верхней части таблицы при первом появлении представления и последующее его перепрыгивание вниз. Я бы предпочел, чтобы table view можно было прокрутить вниз, прежде чем оно появится.

Я попробовал прокрутить в viewWillAppear и viewDidLoad, но в обоих случаях данные еще не были загружены в таблицу, и оба выдают исключение.

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

Ответы [ 31 ]

0 голосов
/ 04 января 2017

В Swift 3.0 Если вы хотите перейти к какой-либо конкретной ячейке табличного представления, измените значение индекса ячейки, например, измените значение self.yourArr.count.

self.yourTable.reloadData()
self.scrollToBottom() 
func scrollToBottom(){
    DispatchQueue.global(qos: .background).async {
        let indexPath = IndexPath(row: self.yourArr.count-1, section: 0)
        self.tblComment.scrollToRow(at: indexPath, at: .bottom, animated: true)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...