Снизу вверх UITableView с прокруткой разной высоты элемента до конца

У меня есть UITableView с разной высотой. Вначале пользователь должен увидеть последние элементы (которые находятся в конце списка) и должен иметь возможность прокручивать вручную вверх.

Чтобы добраться до конца списка, я использую [tableView scrollToRowAtIndexPath:lastIndexPath atScrollPositionBottom animated:NO] в основном потоке после того, как я вызвал [tableView reloadData] в фоновом процессе. Чтобы ускорить работу и дойти до конца, я использую estimatedHeightForRowAtIndexPath (CGFloat)500 и я возвращаюсь к первым 8 элементам (CGFloat)500 и другим элементам (CGFloat)100 . Использование estimatedHeightForRowAtIndexPath heightForRowAtIndexPath позволяет избежать вызова heightForRowAtIndexPath для каждого элемента в списке (это может быть очень длинный список).

С iOS 8 (iPhone 4S, 5S, 6) все работает отлично, но с iOS 7 (iPhone 4S) heightForRowAtIndexPath только heightForRowAtIndexPath но не cellForRowAtIndexPath , поэтому нет элемента, отображаемого до начала прокрутки. Возврат (CGFloat)100 для каждого estimatedHeightForRowAtIndexPath методаHeightForRowAtIndexPath позволяет избежать этого, но он не прокручивается до реального конца списка и не сочетается с iOS 8 iPhone 4S, но он довольно медленный.

Какие-либо предложения?

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

 [tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationNone]; 

Мы закончили с лучшей реализацией estimatedHeightForRowAtIndexPath . Там мы вычисляем с помощью простых вычислений более высокую оценку высоты для первых 50 элементов, поэтому мы получаем значения, близкие к реальной высоте. Для остальных элементов мы возвращаем среднее значение из первых вычислений.

Поскольку вы знаете, что хотите прокрутить до конца, вы можете использовать

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

Тогда вам не нужно вычислять высоты ячеек и добавлять высоты верхних и нижних колонтитулов разделов.

  • Пользовательский выборочный выбор UITableViewCellBackgroundView
  • Скрытие нижнего колонтитула UITableView
  • Как сохранить первую ячейку таблицы в верхней части ее таблицы в режиме просмотра прокрутки
  • выделение uitextview показывает inputAccessoryView
  • Запретить прокрутку при добавлении или обновлении UITableView с помощью NSFetchedResultsController с автозапуском
  • iOS UICollectionView внутри UITableViewCell
  • Проверьте, отображается ли в UITableView определенный UITableViewCell
  • пользовательское редактированиеAccessoryView не работает
  • мой просмотр таблицы повторно использует выбранные ячейки при прокрутке SWIFT
  • Как обращаться с UITableViewCell стало не видно?
  • Swift Tableview всегда показывает разделительные линии
  • Давайте будем гением компьютера.