Как прокрутить до конца UITableView на iPhone, не видя прокрутки - PullRequest
0 голосов
/ 27 мая 2019

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

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

[self.table scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];

Я использую автоматическое расположение, ячейки динамической таблицы иUITableViewAutomaticDimension как высота строки.Я установил estimatedRowHeight = 100

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

Обратите внимание: я загружаю данные из базовых данных.

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

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Это кажется довольно надежным ...

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.estimatedRowHeight = 100;

    [self.tableView performBatchUpdates:nil completion:^(BOOL b) {
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:numRows - 1 inSection:numSections - 1];
        [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
    }];

}

Замените numRows и numSections количеством ваших данных.

0 голосов
/ 27 мая 2019

Теоретически, порядок вызовов правильный: viewDidLoad должен быть вызван до визуализации представления, так что единственное, что мне приходит в голову, это то, что scrollToRowAtIndexPath:atScrollPosition:animated:, вероятно, является асинхронным. Может быть, вы можете что-то сделать с UIScrollViewDelegate (помните, UITableView наследует от UIScrollView) - https://developer.apple.com/documentation/uikit/uiscrollviewdelegate?language=objc

Может быть, вы можете что-то сделать, например, скрыть вид на onLoad и показать его на scrollViewDidScroll:. У меня нет времени, чтобы проверить и вставить фрагмент, но ... может быть, это поможет :) Удачи!

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