Центр уведомлений не работает. Наблюдатель не вызывается - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь вызвать функцию из другого класса в 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
    }
}

А в другом классе у меня естьдобавил (пост):

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

Все вроде нормально, но я не знаю, почему это не работает.Я видел много такой же проблемы здесь в stackoverflow, но ни один ответ не решил мою проблему.

1 Ответ

1 голос
/ 02 мая 2019

Определение функции неверно. Должно быть:

@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)
...