Я уверен, что это должно быть общим шаблоном в приложениях для iOS. У меня есть контроллер списка, который отображает список элементов. У меня есть переход (с использованием раскадровки) к модалу для добавления нового элемента, где я просто собираю имя. После увольнения я вернусь к списку, обновлю его, добавив добавленный элемент, и сделаю несколько других мелких вещей (скажем, для простоты записываем что-нибудь). Важно, что мне нужно зарегистрировать что-то, что является частью контроллера списка, а не модального контроллера.
В какой-то момент мне также нужно вставить новый элемент в контекст моего управляемого объекта.
Я пробовал два подхода:
1) передать ManagedObjectContext в модальный контроллер с помощью PrepareForSegue. Вставьте новый элемент в контекст из контроллера модала. Отлично работает до этого момента. Но теперь я хочу обновить свой вид и написать свои записи в журнале. Я не могу поместить их в viewWillAppear, потому что не хочу, чтобы строки регистрировались при первой загрузке или в любое другое время, только после возврата из модального режима.
2) сделать контроллер списка делегатом модального контроллера, чтобы я мог выполнять всю свою работу в самом контроллере списка, и вызывать код контроллера списка только в том случае, если в модале используется кнопка сохранения (предотвращает проблему). с запуском на каждой нагрузке). Но так как Item является управляемым объектом, я не могу создать его без ссылки на контекст, о котором модальный контроллер ничего не знает, поэтому я не могу вставить элемент в модальное пространство. Я также не могу передать его делегату и вставить его в контроллер списка, поскольку нет способа создать управляемый объект без контекста.
Каков установленный стандарт для этого вида потока? Может быть, я должен использовать комбинацию обоих - передать контекст модальному контроллеру, чтобы он мог обрабатывать свою собственную вставку, а затем вызвать код делегата в контроллере списка просто для обработки регистрации?