UITableView сохраняет прокрутку в правильном положении при обновлении NSFetchedResultsController

Я разрабатываю приложение для iOS, которое в основном использует UITableView. Он извлекает страницы статей с сервера. У нас есть > 25000 статей; поэтому я реализовал обновление от -до -и бесконечную прокрутку для перемещения по коллекции заголовков. Загруженные сохраняются с использованием основных данных; NSFetchedResultsControllerиспользуется для автоматического обновления UITableView.

Однако я реализовал бесконечную прокрутку в обоих направлениях; вверх и вниз. Поскольку пользователю будет разрешено прокручивать 25000 заголовков статей, я должен удалить тот, который пользователь уже прокручивал. Если пользователь прокручивается вверх, я должен повторно -вставить заголовок над текущим. При этом у меня есть движущееся окно внутри коллекции статей.

Я отображаю свои статьи по дате группы, используя раздел и заголовок.

Проблема в том, что поскольку бесконечная прокрутка идет в обоих направлениях, я часто удаляю или добавляю статью на более высокую позицию в таблице. Фактически, чтобы добиться этого, я должен изменить предикат, связанный с NSFetchedResultsController.

Это результат того, что прокрутка испорчена. Я заставил его вернуться в положение, в котором он должен был быть. Это нехорошо, потому что это прыжок (анимация :НЕТ ), если я включаю анимацию, она проходит вокруг места, прежде чем вернуться в правильное положение. И позиция не совсем та, которая должна быть.

Я не уверен, что хорошо объяснил свою проблему. Я думаю, что проблема может заключаться в том, как я использую UITableView, но я не уверен, как мне его использовать, чтобы улучшить ситуацию.

Привет

8
задан Pfitz 1 July 2012 в 16:52
поделиться