Swift NSNotification 观察者不工作
Swift NSNotification Observers not working
我有 2 个视图控制器,其中一个带有开关,当切换时应 post 以下通知。在另一个视图控制器中,我有 Observers,它应该触发以下函数,它只切换一个布尔值。我无法让观察者工作并进行该函数调用,我在这里做错了吗?我有另一个通知(不会通过用户输入触发)以相反的方向发送,效果很好。
@IBAction func switchAction(_ sender: Any) {
if switchUI.isOn {
print("Collecting Data ")
NotificationCenter.default.post(name:NSNotification.Name(rawValue: "Collect"), object: self)
}
else
{
print("Not Collecting Data")
NotificationCenter.default.post(name:NSNotification.Name(rawValue: "Do Not Collect"), object: self)
}
}
func collectDataObserver () {
//Add an Observer
NotificationCenter.default.addObserver(self, selector: #selector(CentralViewController.toggleData(notification:)), name: Notification.Name(rawValue: "Collect"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(CentralViewController.toggleData(notification:)), name: Notification.Name(rawValue: "Do Not Collect"), object: nil)
}
@objc func toggleData(notification: NSNotification) {
let isCollectData = notification.name.rawValue == "Collect"
if(isCollectData){
IsCollectingData = true
}
else
{
IsCollectingData = false
}
}
您需要在 CentralViewController
的 viewDidLoad()
中调用 collectDataObserver()
,即
override func viewDidLoad() {
super.viewDidLoad()
collectDataObserver()
}
我有 2 个视图控制器,其中一个带有开关,当切换时应 post 以下通知。在另一个视图控制器中,我有 Observers,它应该触发以下函数,它只切换一个布尔值。我无法让观察者工作并进行该函数调用,我在这里做错了吗?我有另一个通知(不会通过用户输入触发)以相反的方向发送,效果很好。
@IBAction func switchAction(_ sender: Any) {
if switchUI.isOn {
print("Collecting Data ")
NotificationCenter.default.post(name:NSNotification.Name(rawValue: "Collect"), object: self)
}
else
{
print("Not Collecting Data")
NotificationCenter.default.post(name:NSNotification.Name(rawValue: "Do Not Collect"), object: self)
}
}
func collectDataObserver () {
//Add an Observer
NotificationCenter.default.addObserver(self, selector: #selector(CentralViewController.toggleData(notification:)), name: Notification.Name(rawValue: "Collect"), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(CentralViewController.toggleData(notification:)), name: Notification.Name(rawValue: "Do Not Collect"), object: nil)
}
@objc func toggleData(notification: NSNotification) {
let isCollectData = notification.name.rawValue == "Collect"
if(isCollectData){
IsCollectingData = true
}
else
{
IsCollectingData = false
}
}
您需要在 CentralViewController
的 viewDidLoad()
中调用 collectDataObserver()
,即
override func viewDidLoad() {
super.viewDidLoad()
collectDataObserver()
}