У меня есть родительский контроллер просмотра, на котором размещены 3 контроллера просмотра контейнеров.
В определенные моменты мне нужно передать данные из одного контроллера представления контейнера в другой контроллер представления контейнера, и я подумал, что могу сделать это с помощью шаблона делегирования. Однако я не могу понять, почему делегат не запускается, а принимающий контроллер представления контейнера не получает никаких данных.
Кажется, я не могу определить, что потенциально не так с тем, как я его настроил. Если есть рекомендуемый способ передачи данных между контейнерами, я тоже внимателен!
Ниже приведена сводка кода по настройке:
class ParentViewController: UIViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let firstContainerVC = segue.destination as? FirstContainerVC {
//....
}
if let secondContainerVC = segue.destination as? SecondContainerVC {
//....
}
}
protocol Delegate {
func passX(a: String?)
func passY(b: String?)
}
}
class FirstContainerVC: UIViewController {
var delegate: Delegate?
if isTrue {
delegate.passX(a: "TestOne")
} else {
delegate.passY(b: "TestTwo")
}
}
class SecondContainerVC: UIViewController, Delegate {
override func viewDidLoad() {
let firstVC = self.storyboard?.instantiateViewController(withIdentifier: "firstContainer") as! FirstContainerVC
firstVC.delegate = self
}
func passX(a: String?) {
//if let a = a....
}
func passY(b: String?) {
//if let b = b....
}
}