Функция селектора не вызывается в iOS Swift - PullRequest
0 голосов
/ 27 апреля 2018

В первом контроллере, внутри кнопки отправки действия добавление метода отправки уведомления

 let notificationhide = Notification.Name("hideLiveBtn")

 NotificationCenter.default.post(name: notificationhide, object: nil)

И второе уведомление о вызове контроллера камеры добавляет метод наблюдателя внутри вида didload

 NotificationCenter.default.addObserver(self, selector: 
#selector(self.hideliveBtn(notification:)), name: notificationhide, object: nil)

Функция выбора:

@objc func hideliveBtn(notification : NSNotification){

    btnLiveSettings.isHidden = true

}

Сохраняя точки останова для добавления наблюдателя, он наблюдает, но не вызывает функцию hideliveBtn.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я проверил твой код и он отлично работает.

class ViewController: UIViewController {

    let notificationhide = Notification.Name("hideLiveBtn")

    override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector:#selector(self.hideliveBtn(notification:)), name: notificationhide, object: nil)
        NotificationCenter.default.post(name: notificationhide, object: nil)
    }

    @objc func hideliveBtn(notification : NSNotification){
        print("notification fired")
    }
}
0 голосов
/ 27 апреля 2018

Пожалуйста, внедрите NSNotification Center другим способом.

Шаг 1:

extension NSNotification.Name {
    public static let hideLiveBtnNotificationKey = NSNotification.Name(rawValue: "hideLiveBtn")
}

Шаг 2

В viewdidLoad () контроллера

NotificationCenter.default.addObserver(self, selector: #selector(notificationReceived), name: .hideLiveBtnNotificationKey, object: nil)

Шаг 3

Функция выбора

@objc func hideliveBtn(notification : NSNotification){

    btnLiveSettings.isHidden = true

}

Шаг 4

override func viewWillDisappear(_ animated: Bool) {
        NotificationCenter.default.removeObserver("hideLiveBtnNotificationKey")
    }
...