通知中心不起作用。没有调用观察者

时间:2019-05-02 13:08:09

标签: ios swift nsnotificationcenter

我试图从Swift的另一个类中调用一个函数,而NotificationCenter是一个选择,所以我从addObserver开始。

override func viewDidLoad() {
    super.viewDidLoad()

    NotificationCenter.default.addObserver(self, selector: #selector(toggleSideMenu), name: NSNotification.Name("callToggleSideMenu"), object: nil)
}

@objc func toggleSideMenu(){
    if isMenuOpen {
        sideContainer.constant = -260
    } else {
        sideContainer.constant = 0
    }
}

在另一个类中,我添加了(post):

@objc func clickOnButton(button: UIButton) {
   NotificationCenter.default.post(name: NSNotification.Name("callToggleSideMenu"), object: nil)
}

一切似乎都很好,但我不知道为什么它不起作用。我在stackoverflow中看到了很多相同的问题,但是没有答案解决了我的问题。

1 个答案:

答案 0 :(得分:1)

功能定义不正确。应该是:

@objc func toggleSideMenu(_ notification: Notification){
    if isMenuOpen {
        sideContainer.constant = -260
    } else {
        sideContainer.constant = 0
    }
 }  

使用:

NotificationCenter.default.addObserver(self, selector: #selector(toggleSideMenu(_:)), name: NSNotification.Name("callToggleSideMenu"), object: nil)