Как сохранить смещение содержимого UITableView после вызова -reloadData

CGPoint offset = [_table contentOffset];
[_table reloadData];
[_table setContentOffset:offset animated:NO];    //unuseful

//    __block UITableView *tableBlock = _table;
//    [self performBlock:^(id sender) {
//        [tableBlock setContentOffset:offset];
//    } afterDelay:2];

Я знаю, что не знаю ни одного метода делегата, который вызывается после reloadData . А использование afterDelay: 2 , которое является своего рода хакерством, может быть слишком коротким или слишком длинным, так как я могу его реализовать?

57
задан Honey 9 October 2018 в 18:03
поделиться

1 ответ

Ответ Matt выше заставил меня понять, что это должна быть проблема с estimatedRowHeight.

Поэтому, поскольку несколько указали reloadData, не должен изменять contentOffset поэтому, когда Вы устанавливаете Ваш rowHeight = UITableView.automaticDimension только, чтобы убедиться установить корректное estimatedRowHeight.

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

я надеюсь, что это могло помочь кому-то еще.

1
ответ дан 7 November 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: