Проблема добавления наблюдателя Swift - PullRequest
0 голосов
/ 27 октября 2018

Я хочу, чтобы мое приложение работало при изменении на другой день.

Итак, в моем 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, наблюдатель, кажется, не видит этого события.

Этосинтаксис или просто недопонимание механизма?

1 Ответ

0 голосов
/ 27 октября 2018

Вам необходимо добавить наблюдателя для 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.

...