选择器功能未在iOS Swift中调用

时间:2018-04-27 09:56:46

标签: ios swift3 nsnotificationcenter

在第一个控制器中,内部发送操作按钮添加通知发布方法

 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 :(得分:1)

请通过其他方式实施NSNotification中心。

第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")
    }

答案 1 :(得分:1)

我检查了你的代码,并且完全正常工作。

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")
    }
}