从另一个viewController Swift中删除通知观察器

问题描述 投票:0回答:1

我有2个ViewController VCA和VCB。我在viewDidAppear中设置的VCA中有一个观察者]

我从VCA导航到VCB,然后当您按下VCB上的按钮时,将发布通知,该通知执行某些功能然后关闭VCB,然后再次出现VCA


//VCB 

    @IBAction func buttonPressed(_ sender: Any) {
        NotificationCenter.default.post(name:    Notification.Name("name"), object: nil)
}

 @IBAction func backButtonPressed(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }

//VCA

 override func viewDidAppear(_ animated: Bool) {
        NotificationCenter.default.addObserver(self, selector: #selector(self.someFunction), name: Notification.Name("name"), object: nil)
}

现在问题是,一旦VCA出现,它将添加另一个观察者我知道问题是我需要删除Observer,但是如果我在viewWillDisappear中删除它,则通知将永远不会被调用,因为它已被删除,然后才能发布它。

我试图像这样删除VCB中的观察者

    @IBAction func backButtonPressed(_ sender: Any) {
        let vc = self.storyboard?.instantiateViewController(withIdentifier: "VCA") as! VCA
        NotificationCenter.default.removeObserver(vc, name: Notification.Name("stateChange"), object: nil)
        dismiss(animated: true, completion: nil)
    }

但是那没用

因此,在关闭VCB时,我需要从VCB中删除VCA中的观察者。我已经看过Remove notification observer from another view controller

但是它在OBJC中,但我不太清楚,再加上OP并没有将其标记为正确的解决方案,也没有评论它确实起作用

我有2个ViewController VCA和VCB。我在viewDidAppear中设置了VCA中的观察者,我从VCA导航到VCB,然后当您按VCB上的按钮时,将发布通知,该通知执行...

ios swift
1个回答
0
投票

[First

最好在此设置委托,而不是通知中心,因为通知中心用于1-M而不是1-1通知
© www.soinside.com 2019 - 2024. All rights reserved.