代码之家  ›  专栏  ›  技术社区  ›  Sjakelien

添加观察者时出错

  •  -1
  • Sjakelien  · 技术社区  · 6 年前

    所以,在我的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 回复  |  直到 5 年前
        1
  •  4
  •   Leo Dabus    4 年前

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

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

    为了

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

    注意:如果您的意图是在日期更改时收到通知,您可以使用 .NSCalendarDayChanged 而不是 UIApplication.significantTimeChangeNotification .

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