У меня есть 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: это может быть сделано ясно - см. приложение для оффлайнового твиттера для одного, когда вы выходите для обновления.