簡體   English   中英

從另一個 viewController Swift 中刪除通知觀察者

[英]Removing a notification observer from another viewController Swift

我有 2 個 ViewControllers VCA 和 VCB。 我在 viewDidAppear 中設置了一個 VCA 觀察員

我從 VCA 導航到 VCB,然后當您按下 VCB 上的按鈕時,將發布執行一些 function 的通知,然后我關閉 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,它就會添加另一個觀察者

我試圖像這樣刪除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 中的觀察者。 我已經從另一個視圖中查看了刪除通知觀察者 controller

但它在 OBJC 中,我並不完全理解,而且 OP 沒有將其標記為正確的解決方案或評論它確實有效

首先最好在這里設置一個委托而不是通知中心,因為后者用於 1-M 而不是 1-1 通知

其次,您可以在viewDidLoad中添加觀察者

如果您需要在關閉 vcB 后將其刪除,則結束 function someFunction do

 NotificationCenter.default.removeObserver(self)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM