Изменение предиката основных данных из setEditing - PullRequest
1 голос
/ 12 августа 2011

Мое приложение поддерживает список данных, некоторые строки которых могут быть скрыты пользователем.Кнопка «Скрыть / показать» находится на панели редактирования, доступ к которой осуществляется путем перевода таблицы в режим редактирования и выбора строки для редактирования.Это означает, что в режиме редактирования должны отображаться все строки, даже те, которые обычно скрыты;в противном случае не было бы способа их отобразить.

Я реализовал это, установив fetchedResultsController в nil и перезагрузив таблицу в setEditing, а затем изменив код, который создает предикат для fetchedResultsController, чтобы проверить, находится ли таблица врежим редактирования и, если это так, пропуск части предиката, исключающей скрытые списки.Поэтому, когда пользователь нажимает кнопку «Редактировать», таблица перезагружается со всеми строками на пути в режим редактирования и снова загружается только с невидимыми строками на пути назад.

Это работает нормально, за исключением того, что убило анимациюобычно это видно при входе и выходе из режима редактирования.Дополнительная перезагрузка заставила это выглядеть внезапным.Не имеет значения, если я сделаю перезагрузку до или после вызова [super setEditing: animated].

Есть ли лучший способ или место для этого?

Ответы [ 2 ]

1 голос
/ 12 августа 2011

С: http://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html

Изменение запроса на выборку Вы не можете просто изменить запрос на выборку, чтобы изменить результаты.Если вы хотите изменить запрос на выборку, вы должны:

  1. Если вы используете кеш, удалите его (используя deleteCacheWithName :).Обычно вы не должны использовать кеш, если вы изменяете запрос на выборку.
  2. Измените запрос на выборку.
  3. Invoke executeFetch:

Проверьте, работает ли он лучшепротив уничтожения контроллера и перезагрузки стола.

0 голосов
/ 12 августа 2011

Включите в ваш объект CD атрибут видимости.Когда вы перейдете в режим редактирования, переверните атрибуты для всех скрытых ячеек.Сделайте предикат для fetchedResultsController включающим атрибут видимости.Он автоматически добавит ячейки таблицы, если вы реализовали обратные вызовы.

...