@Tommy32

Как запустить функцию в предыдущем VC при выполнении dismiss?

Есть VC1 и VC2, осуществляется переход VC1->VC2 presentModaly. В VC2 есть кнопка back с функцией self.dismiss(animated: true, completion: nil). Но мне при таком переходе обратно необходимо обновить label.text в VC1 значение которого мне стало известно в VC2. как это сделать?
  • Вопрос задан
  • 333 просмотра
Решения вопроса 2
maximglobak
@maximglobak
iOS developer
Можно тремя способами это сделать (можно и больше, но это как правило извращения уже).
1) Через делагаты, можно легко найти в гугле, мне этот способ меньше всего нравится.
2) Создать отдельный класс (мб менеджер?) Singleton, в котором будешь сохранять все нужные значение по определенной сущности
а в первом контроллере, в методе ViewWillAppear, который вызывается каждый раз перед появлением экрана обновлять свой лейбел, данные который ты возьмешь из того самого класса-менеджера
чаще всего такой вариант будет правильным.
3) найти в навигейшен контроллере свой первый контроллер и ему в присвоить значение из второго контроллера.
Т.е. при первом и втором варианте у тебя должна торчать проверти наружу, которую все могут менять, а потому в нужный момент (ViewWillAppear) обновляешь свой лебйел с этой пропертей.
Ответ написан
Комментировать
ManWithBear
@ManWithBear
Swift Adept, Prague
Из того что описал Максим Глобак:
1) Правильный подход для возврата данных обратно (как вариант передавать callback)
2) Синглетоны - зло. В целом метод можно применять, если заменить синглетон на зависимость у обоих контроллеров (гуглить Dependency Injection)
3) За это нужно бить ногами.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sibit11
@sibit11
В подобных ситуациях лучшее решение на мой взгляд Unwind Segue.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы