Обновление основных данных из модальных - PullRequest
2 голосов
/ 06 января 2012

Я уверен, что это должно быть общим шаблоном в приложениях для iOS. У меня есть контроллер списка, который отображает список элементов. У меня есть переход (с использованием раскадровки) к модалу для добавления нового элемента, где я просто собираю имя. После увольнения я вернусь к списку, обновлю его, добавив добавленный элемент, и сделаю несколько других мелких вещей (скажем, для простоты записываем что-нибудь). Важно, что мне нужно зарегистрировать что-то, что является частью контроллера списка, а не модального контроллера.

В какой-то момент мне также нужно вставить новый элемент в контекст моего управляемого объекта.

Я пробовал два подхода:

1) передать ManagedObjectContext в модальный контроллер с помощью PrepareForSegue. Вставьте новый элемент в контекст из контроллера модала. Отлично работает до этого момента. Но теперь я хочу обновить свой вид и написать свои записи в журнале. Я не могу поместить их в viewWillAppear, потому что не хочу, чтобы строки регистрировались при первой загрузке или в любое другое время, только после возврата из модального режима.

2) сделать контроллер списка делегатом модального контроллера, чтобы я мог выполнять всю свою работу в самом контроллере списка, и вызывать код контроллера списка только в том случае, если в модале используется кнопка сохранения (предотвращает проблему). с запуском на каждой нагрузке). Но так как Item является управляемым объектом, я не могу создать его без ссылки на контекст, о котором модальный контроллер ничего не знает, поэтому я не могу вставить элемент в модальное пространство. Я также не могу передать его делегату и вставить его в контроллер списка, поскольку нет способа создать управляемый объект без контекста.

Каков установленный стандарт для этого вида потока? Может быть, я должен использовать комбинацию обоих - передать контекст модальному контроллеру, чтобы он мог обрабатывать свою собственную вставку, а затем вызвать код делегата в контроллере списка просто для обработки регистрации?

1 Ответ

0 голосов
/ 06 января 2012

Я использую комбинацию 1) и 2).Создайте новый управляемый объект в prepareForSegue и передайте его своему контроллеру модального представления.Установите свой контроллер списка в качестве делегата модального контроллера представления и обновите свою регистрацию в методах делегата.

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

(На самом деле, если вы настраиваете толькоимя в модале, которое даже не нужно знать об объекте, вы можете просто вернуть строку, но если вы передадите объект, это даст вам больше гибкости, если вы решите сделать его более функциональным.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...