В моем проекте есть два контроллера вида и два класса контроллера вида. Я хочу изменить цвет фона первого контроллера представления от второго контроллера представления, используя уведомление и наблюдателя. Но это не работает. Я заметил, что метод changeViewControllerColor (_ :) не вызывается.
Контроллер первого просмотра:
import UIKit
let colorChangeNotificationKey = "changeFirstVcColor"
class FirstViewController: UIViewController {
let notiName = Notification.Name(rawValue: colorChangeNotificationKey)
deinit {
NotificationCenter.default.removeObserver(self)
}
override func viewDidLoad() {
super.viewDidLoad()
observer()
}
func observer() {
NotificationCenter.default.addObserver(self, selector: #selector(FirstViewController.changeViewControllerColor(_:)), name: self.notiName, object: self)
}
@objc func changeViewControllerColor(_: NSNotification) {
self.view.backgroundColor = UIColor.white
}
@IBAction func button(_ sender: UIButton) {
let vc = storyboard?.instantiateViewController(identifier: "secondViewController") as! SecondViewController
navigationController?.pushViewController(vc, animated: true)
}
}
Контроллер второго просмотра:
import UIKit
class SecondViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
label.text = "First VC colour is white now"
let notiName = Notification.Name(rawValue: colorChangeNotificationKey)
NotificationCenter.default.post(name: notiName, object: nil)
}
}