Как передать данные от дочернего к второму родительскому контроллеру представления без использования NotificationCenter в swift - PullRequest
0 голосов
/ 25 сентября 2019

Моя ситуация такова, у меня есть контроллер навигации (nv) с корневым контроллером представления (rootVC).И еще один контроллер представления (firstChildVC) выдвинут в rootVC.И еще один контроллер представления (secondChildVC) выдвинут в firstChildVC.(В реальном случае у меня есть больше дочерних контроллеров подпоследовательности) После вызовов API и некоторых вычислений в secondChildVC мне нужно передать некоторые данные из secondChildVC обратно в rootVC и popToRootViewController, чтобы показать некоторые данные.

Я недумаю, что делегат и закрытие являются хорошим выбором в этом случае.Единственное, что я мог придумать, это использовать NotificationCenter.Только что узнать, есть ли лучший способ сделать это?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 25 сентября 2019

Я думаю, что есть три правильных способа сделать это без чрезмерно тесно связанных вещей:

  1. Центр уведомлений
  2. Закрытия
  3. Шаблон делегата

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

0 голосов
/ 25 сентября 2019

Есть два других способа сделать это: один использует делегаты, другой - замыкания

0 голосов
/ 25 сентября 2019

Вы можете попробовать это внутри SecondVC, затем перейти в root

if let root = self.navigationController?.viewControllers.first as? RootVC {
    root.sendData(data)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...