Я работаю над схемой контроллера с несколькими представлениями, и пользователь может изменить значение, показанное в самом глубоком представлении. Скажите, что А - верх, В - второй, а С - третий.
При использовании панели навигации в C для возврата к B необходимо выполнить перезагрузку таблицы в A. (таблица небольшая, поэтому я не беспокоюсь об оптимизации для обновления только одной строки).
Используя протокол, я полагаю, что C должен предложить протокол, а A может использовать делегата для его выполнения в функции, подобной someOowIsUpdated. Недостатком, на мой взгляд, является то, что A должен включать заголовок C, чтобы знать этот протокол. При добавлении какого-либо другого контроллера, скажем, родного брата, необходимо обновить источник A, добавив дополнительное включение. Мне кажется, это неправильный путь.
Альтернативой может быть передача некоторого идентификатора вниз от A при создании экземпляров B и C, когда B создает экземпляр C. Мне это тоже кажется довольно неуклюжим.
Когда C хочет уведомить A о том, чтобы что-то сделать, каков наилучший способ? Уведомление?
Я бы предпочел, чтобы C включал заголовок из A, а не наоборот.
Есть мысли?