У меня есть 2 ViewController, называемых ViewController1 и ViewController2.
Я отправляю уведомление из ViewController1 в ViewController2, но в первый раз, когда он публикуется, в первый раз NotificationCenter не работает.
Когда я вернулся из ViewController2 в ViewController1, а затем снова, если попытаться переместить ViewController2, тогда NotificationCenter работает,
// ViewController1.swift
import UIKit
class ViewController1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
//Move to next VC
@IBAction func nextButtonClicked(_ sender: Any) {
NotificationCenter.default.post(name: Notification.Name("callMethodPrint1FromVC2"), object: nil)
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let vc2 = storyBoard.instantiateViewController(withIdentifier: "ViewController2Id") as? ViewController2
navigationController?.pushViewController(vc2!, animated: true)
}
}
// ViewController2.swift
import UIKit
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
//Recieve notification
NotificationCenter.default.addObserver(self, selector: #selector(self.print1Method(notification:)), name: Notification.Name("callMethodPrint1FromVC2"), object: nil)
}
@objc func print1Method(notification: Notification) {
print("Notification came from VC 1")
}
@IBAction func backToVC1(_ sender: Any) {
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let vc2 = storyBoard.instantiateViewController(withIdentifier: "ViewController1Id") as? ViewController1
navigationController?.pushViewController(vc2!, animated: true)
}
//Remove notification object
deinit {
NotificationCenter.default.removeObserver(self, name: Notification.Name("callMethodPrint1FromVC2"), object: nil)
}
}
Фактический вывод :
Когда я перемещаю ViewController1 в ViewController2 в первый раз и каждый раз, метод print1Method из ViewController2 должен вызывать.
Но это не работает, как ожидалось.Есть ли в моем коде проблемы с Anu или я что-то упустил?