Как реагировать на CLKComplicationServerActiveComplicationsDidChangeNotification
На полезный вопрос Force reload watchOS 2 Complications пользователь @alexeyvmp упоминает в комментарии, что вы должны добавить наблюдателя для CLKComplicationServerActiveComplicationsDidChangeNotification
событие.
Что такое хорошее место для создания этого наблюдателя и как оно будет выглядеть? Я создаю это из моего ComplicationDataSource, или в моем InterfaceController? Как мне убедиться, что он не воссоздан снова и снова?
Я попытался прочитать о том, как создавать наблюдателей в Swift
но мне трудно понять, где его поставить. У меня сейчас
let notificationCenter = NSNotificationCenter.defaultCenter()
let mainQueue = NSOperationQueue.mainQueue()
_ = notificationCenter.addObserverForName(CLKComplicationServerActiveComplicationsDidChangeNotification, object: nil, queue: mainQueue) { _ in
print("active complications changed. refresh!")
}
Любая помощь приветствуется.
1 ответ
Вы должны поместить наблюдателя в InterfaceController:
NotificationCenter.default.addObserver( self,
selector: #selector(InterfaceController.CLKComplicationServerActiveComplicationsDidChangeNotification(_:)),
name: NSNotification.Name(rawValue: "CLKComplicationServerActiveComplicationsDidChangeNotification"), object: nil )
Таким образом, вы будете знать в InterfaceController, когда сложность изменилась.