423 votes

NSNotificationCenter addObserver en Swift

Comment ajouter un observateur en Swift au centre de notification par défaut? Je essaie de porter cette ligne de code qui envoie une notification lorsque le niveau de la batterie change.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil];

0 votes

Que demandez-vous précisément ? Comment fonctionne le sélecteur ?

1 votes

Je n'ai pas réalisé que le type "Selector" est juste une chaîne de caractères en Swift. Aucune mention dans la documentation.

0 votes

1voto

Pankaj Jangid Points 116

Nous devrions également supprimer la notification.

Par exemple.

deinit 
{
  NotificationCenter.default.removeObserver(self, name:NSNotification.Name(rawValue: "notify"), object: nil)

}

4 votes

Je crois que vous n'avez pas besoin de cela depuis iOS 9. C'est fait automatiquement.

1voto

Dhruv Points 64

En Swift 3, Xcode 8.2:- verificación del nivel de estado de la batería

//Añadir observador
NotificationCenter.default.addObserver(self, selector: #selector(batteryStateDidChange), name: NSNotification.Name.UIDeviceBatteryStateDidChange, object: nil)

//Se dispara cuando el nivel de la batería cambia

func batteryStateDidChange(notification: NSNotification){
    //realizar la manipulación aquí
}

1voto

Ashim Dahal Points 153

NSNotificationCenter ajouter syntaxe observateur en Swift 4.0 pour iOS 11

  NotificationCenter.default.addObserver(self, selector: #selector(keyboardShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)

Ceci est pour le type de nom de notification keyboardWillShow. D'autres types peuvent être sélectionnés parmi les options disponibles

Le Selector est de type @objc func qui gère comment le clavier s'affichera (c'est votre fonction utilisateur)

0 votes

Juste pour clarifier pour toute personne lisant cette réponse: "le sélecteur est de type @objc func..." signifie que la fonction associée à #selector doit être annotée avec @objc. Par exemple: @objc func keyboardShow() { ... } Cela m'a perturbé pendant une minute en Swift 4!

0voto

David.Chu.ca Points 7621

Swift 5 & Xcode 10.2:

NotificationCenter.default.addObserver(
            self,
            selector: #selector(batteryLevelDidChangeNotification),
            name: UIDevice.batteryLevelDidChangeNotification,
            object: nil)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X