1

Sur la question utile Force reload watchOS 2 Complications l'utilisateur @alexeyvmp mentionne in a comment que vous devriez ajouter un observateur pour l'événement CLKComplicationServerActiveComplicationsDidChangeNotification.Comment réagir à CLKComplicationServerActiveComplicationsDidChangeNotification

Quel est l'endroit idéal pour créer cet observateur, et à quoi ressemblerait-il? Est-ce que je le crée à partir de mon ComplicationDataSource, ou dans mon InterfaceController? Comment puis-je m'assurer qu'il n'est pas recréé encore et encore?

J'ai essayé de lire comment créer des observateurs au Swift mais j'ai du mal à trouver où le mettre. J'ai actuellement

let notificationCenter = NSNotificationCenter.defaultCenter() 
let mainQueue = NSOperationQueue.mainQueue() 

_ = notificationCenter.addObserverForName(CLKComplicationServerActiveComplicationsDidChangeNotification, object: nil, queue: mainQueue) { _ in 
    print("active complications changed. refresh!") 
} 

Toute aide est appréciée.

Répondre

1

Vous devez placer l'observateur dans InterfaceController:

NotificationCenter.default.addObserver(self, 
     selector: #selector(InterfaceController.CLKComplicationServerActiveComplicationsDidChangeNotification(_:)), 
     name: NSNotification.Name(rawValue: "CLKComplicationServerActiveComplicationsDidChangeNotification"), object: nil) 

Vous saurez à l'InterfaceController lorsque la complication a changé.