Сохранять статичность uitableview при вставке строк вверху

У меня есть 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, чтобы узнать об обновлениях.

60
задан Dean Smith 26 November 2010 в 15:37
поделиться