В моем MainViewController я установил кнопку и представление контейнера, которое содержит SecondViewController:
let secondViewController = SecondViewController()
secondViewController.willMove(toParent: self)
containerView.addSubview(secondViewController.view)
secondViewController.view.frame = containerView.bounds
secondViewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.addChild(secondViewController)
secondViewController.didMove(toParent: self)
Я настроил свой протокол делегирования:
protocol SayHiDelegate {
func sayHi()
}
Внутри MainViewController:
var delegate: SayHiDelegate?
@objc func buttonTapped() {
delegate?.sayHi()
}
Я настроил функцию делегата в своем SecondViewController.
func sayHi() {
label.text = "HI"
}
В SecondViewcontroller viewDidLoad:
let vc = MainViewController()
vc.delegate = self
В этом проекте я не использовал раскадровку. Проблема в том, что когда я нажимаю кнопку в моем MainViewController, функция делегата вызывается, но не работает. Я думаю, что проблема должна заключаться в использовании представления контейнера и функции делегата. Здесь скачать проект. Любые подсказки? Спасибо
SecondViewController
необходимо уведомитьMainViewController
, а не наоборот. - person Gustavo Vollbrecht   schedule 14.07.2019delegate?
будет иметь значение от ?? назначил это ?? это ноль, поэтому код не срабатывает внутри второго vc, на него нет ссылки - person Sh_Khan   schedule 14.07.2019