无法添加观察者Swift

时间:2018-10-27 11:52:51

标签: swift observers

我希望我的应用在第二天发生变化时起作用。

所以,在我的appDelegate中,我放了

func applicationSignificantTimeChange(_ application: UIApplication){
        //this one fires
    }

,并且在应该更新其内容的ViewController中,我这样做:

override func viewDidLoad() {
        NotificationCenter.default.addObserver(self, selector: #selector(self.dayChanged(notification:)), name: Notification.Name("significantTimeChangeNotification"), object: nil)

    }

@objc func dayChanged(notification: NSNotification){
        //this one doesn't fire
    }

以某种方式,在调用AppDelegate中的func时,观察者似乎对该事件视而不见。

是这种语法还是对机制的简单误解?

1 个答案:

答案 0 :(得分:2)

您需要为UIApplicationSignificantTimeChangeNotification添加一个观察者:

NotificationCenter.default.addObserver(self, selector: #selector(dayChanged), name: UIApplicationSignificantTimeChangeNotification, object: nil)

对于 Swift 4.2或更高版本

NotificationCenter.default.addObserver(self, selector: #selector(dayChanged), name: UIApplication.significantTimeChangeNotification, object: nil)

注意:如果要在日期更改时通知您的意图,则可以使用.NSCalendarDayChanged代替UIApplication.significantTimeChangeNotification

相关问题