Как обновить вид таблицы дедушки и бабушки - PullRequest
0 голосов
/ 09 октября 2011

Я работаю над схемой контроллера с несколькими представлениями, и пользователь может изменить значение, показанное в самом глубоком представлении. Скажите, что А - верх, В - второй, а С - третий.

При использовании панели навигации в C для возврата к B необходимо выполнить перезагрузку таблицы в A. (таблица небольшая, поэтому я не беспокоюсь об оптимизации для обновления только одной строки).

Используя протокол, я полагаю, что C должен предложить протокол, а A может использовать делегата для его выполнения в функции, подобной someOowIsUpdated. Недостатком, на мой взгляд, является то, что A должен включать заголовок C, чтобы знать этот протокол. При добавлении какого-либо другого контроллера, скажем, родного брата, необходимо обновить источник A, добавив дополнительное включение. Мне кажется, это неправильный путь.

Альтернативой может быть передача некоторого идентификатора вниз от A при создании экземпляров B и C, когда B создает экземпляр C. Мне это тоже кажется довольно неуклюжим.

Когда C хочет уведомить A о том, чтобы что-то сделать, каков наилучший способ? Уведомление? Я бы предпочел, чтобы C включал заголовок из A, а не наоборот.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 09 октября 2011

Уведомление действительно, кажется, самое важное решение здесь, я думаю.Это также дает вам хорошую гибкость, если вы захотите что-то изменить позже.

0 голосов
/ 11 октября 2011

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

Таким образом, я бы порекомендовал передать уникальный NSManagedObjectContext по цепочке контроллеров и даже соответствующий NSManagedObject подкласс для удобства. Нет необходимости обращаться к родительскому контроллеру или общаться с ним, если у вас есть доступ к модели данных. Это также намного лучший дизайн шаблона.

Вы обнаружите, что несколько строк кода для классов #importing и объявления свойств в итоге окажутся намного меньше, чем работа с уведомлениями. (ИМХО, тоже гораздо менее "неуклюжий". -))

...