Организация диспетчера данных родительского контроллера или использование Core Data.
В случае хранения данных в родительском контроллере используйте внедрение зависимостей, как описано здесь
Вот пример для вашего случая:
var dataFromC = "" // or nil
var dataFromB = "" // or nil
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "B",
let viewController = segue.destinationViewController as? BViewController {
viewController.dataFromC = self.dataFromC
// declare method in BViewController
// var method : ((String) -> ())? = nil
viewController.method = {[weak self] valueFromB in
self?.dataFromB = valueFromB
}
}
if segue.identifier == "C",
let viewController = segue.destinationViewController as? CViewController {
viewController.dataFromB = self.dataFromB
// declare method in CViewController
// var method : ((String) -> ())? = nil
viewController.method = {[weak self] valueFromC in
self?.dataFromC = valueFromC
}
}
}
Если вы хотите передать значение в родительский контроллер из BViewController
, используйте self.method("yourValueFromB")
, где вы измените значение.Для случая с CViewController
используйте тот же подход.