Как сохранить позицию старой видимой ячейки после вставки новых ячеек в верхней части UITableView - PullRequest
1 голос
/ 07 сентября 2010

Предположим, у меня есть табличное представление, и я хочу реализовать что-то вроде этого:

  • Представление таблицы содержит n ячеек по умолчанию.
  • Новые ячейки будут добавлены вверху (вверху) представления таблицы.
  • Источником данных табличного представления является изменяемый массив.

Проблема в том, что когда я использую [tableview reloadData], новые данные всегда отображаются в верхней части таблицы, но я хочу, чтобы старые видимые ячейки оставались в старом положении, что означает отсутствие обновления после перезагрузки данных. Я попробовал некоторые решения, и я обнаружил, что если я добавлю новые ячейки в хвост и обновлю табличное представление, старые видимые ячейки останутся в прежнем положении без каких-либо дополнительных усилий. Но я не знаю, как оставить старые видимые ячейки в старом положении, если я добавлю новые ячейки вверху.

В качестве справки, я думаю, что официальное приложение Twitter для iPhone просто реализовало то, что я хочу, в представлении временной шкалы, но я не знаю, как его заархивировать.

Ребята, есть идеи?

Большое спасибо.

-Тонни Сюй

[Обновить] Немного сложно описать, что я хочу в тексте. Я добавил несколько картинок.

Как показано на рисунке [ссылка ниже], ячейки по умолчанию запускаются из раздела Калифорния, я хочу добавить 3 новые ячейки до «Brea», то, что я хочу, это после того, как я добавил «Новая ячейка 1,2,3» ", ячейка" Бреа "до сих пор остается той позицией, где она была. Другими словами, новые ячейки 1,2,3 не видны после обновления.

Извините , потому что у меня недостаточно репутации, чтобы использовать изображение, пожалуйста, посетите этот URL http://i.stack.imgur.com/S9jJl.png

Ответы [ 2 ]

1 голос
/ 21 октября 2010

Я понял, как это реализовать, надеюсь, что это может помочь кому-то еще, кто хочет того же эффекта.

Дело в том, что UITableView является подклассом UIScrollView.Таким образом, UITableView обладает всеми свойствами UIScrollView, особенно для этого подойдет одно: UITableView.contentOffset, это также можно анимировать с помощью [UITableView setContentOffset:animated:].

Чтобы заархивировать тот же эффект, что и в официальном приложении Twitter для iPhone, нам нужно знать каждый раз, сколько смещений добавляется или удаляется.Запомните прежнее смещение и установите смещение +/- дельта-смещение без анимации.

Готово.

0 голосов
/ 03 февраля 2012

Только что ответил на аналогичный вопрос с фрагментами кода здесь

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

В основном:

  • Сохраните смещение прокрутки там, где вы бы вызвали beginUpdate:.
  • Вместо вызовов InsertCell вы добавляете высоту ячейки к сохраненному смещению.
  • Где бы вы вызвали endUpdate :, вызовите reloadData, затем прокрутите сохраненное смещение без анимации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...