我有一个模态UIViewController:

let rVC = RecoveryViewController()
rVC.modalPresentationStyle = .overFullScreen
self.present(rVC, animated: true, completion: nil)


在此ViewController的viewDownload中,我有一个函数user.checkUserData(),该函数将在作业完成后发送NSNotifications。

当然,这些通知中的任何一个都是观察者:

NotificationCenter.default.addObserver(self, selector: #selector(RecoveryViewController.userVIP), name: userDataIsHere, object: nil)


但是似乎我的模态ViewController无法接收任何通知,因为什么也没有发生。同时,如果我尝试将这样的观察者添加到父UIViewController(非模态)中,它将像一个超级按钮一样工作(实际上,我检查了一下)。

我的通知非常简单,并且

let userDataIsHere = Notification.Name("userDataIsHere")
NotificationCenter.default.post(name: userDataIsHere, object: nil)


我在这里做错了什么?

最佳答案

尝试这个。

class ViewController: UIViewController {
    let userDataIsHere = Notification.Name("userDataIsHere")

    override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector: #selector(modalPopUp), name: userDataIsHere, object: nil)
    }

    @objc func modalPopUp() {
        let rVC = RecoveryViewController()
        rVC.modalPresentationStyle = .overFullScreen
        self.present(rVC, animated: true, completion: nil)
    }
}

10-08 14:59