У меня есть tableView, в который я вставляю строки вверху.
Пока я делаю это, я хочу, чтобы текущее представление оставалось полностью неподвижным, чтобы строки отображались только если вы прокрутите назад вверх.
Я попытался сохранить текущую позицию базового UIScrollview и сбросить позицию после того, как строки были вставлены, но это приводит к дрожанию вверх и вниз, хотя в конечном итоге он возвращается обратно в то же самое место.
Есть ли хороший способ добиться этого?
Обновление: я использую beginUpdate, затем insertRowsAtIndexPath, endUpdates. Нет вызова reloadData.
scrollToRowAtIndexPath перескакивает в верхнюю часть текущей ячейки (сохраненной перед добавлением строк).
Другой подход, который я пробовал, который заканчивается в точно в правильном темпе, но с дрожанием есть.
save tableView currentOffset. (Underlying scrollView method)
Add rows (beginUpdates,insert...,endUpdates)
reloadData ( to force a recalulation of the scrollview size )
Recalculate the correct new offset from the bottom of the scrollview
setContentOffset (Underlying scrollview method)
Проблема в том, что reloadData заставляет scrollview / tableview на короткое время начать прокрутку, затем setContentOffset возвращает его в правильное место.
Есть ли способ заставить tableView выработать новый размер без начальный дисплей?
Обертывание всего этого в beginAnimation commitAnimation тоже не очень помогает.
Обновление 2: это явно можно сделать - посмотрите официальное приложение Twitter, чтобы узнать об обновлениях.