J'essaie de réparer mon nsnotificationCenter et que ce qui ne fonctionne pas
5 Réponses :
Oui, dans SWIFT 2.2 Les littéraux de chaîne pour les sélecteurs sont obsolètes et là ce nouvel opérateur #selector que vous devez utiliser. P>
Reportez-vous à cette proposition de #Selector avec de bons exemples ici: P>
https://github.com/ Apple / Swift-Evolution / Blob / Master / Propositions / 0022-Objc-Selectors.md P>
Ajouter @OBJC à la méthode de votre sélecteur:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "YOUR_SELECTOR_METHOD:", name: "your notification name", object: nil) @objc func YOUR_SELECTOR_METHOD(notification: NSNotification) { //your code }
C'est une mauvaise façon de faire les choses. Ce n'est pas parce que vous pouvez le faire, cela ne signifie pas que vous devriez. La manière surse d'erreur est d'utiliser #selector code>
Le code que vous avez collé n'a aucun sens:
NSNotificationCenter.defaultCenter().addObserver(self, #selector(goBack), name: "your notification name", object: nil)
Ceci est également incorrect. Vous ajoutez un observateur, auto code>, mais en passant dans une fonction de classe ou statique
goback code>. Pour obtenir une référence à une fonction d'instance, comme
addsubview code> sur
uIView code>, vous devez faire
let View = uIView () code>
Laisser la fonctionVariable = View.addsubview (_:) code>
Et qu'en est-il du paramètre NSnotification avec le sélecteur? Est-ce toujours (_ :)?
Vous devez regarder ceci: https : //github.com/apple/swift-evolution/blob/master/proposals/0022-Objc-Selectors.md
Le Je ferais référence à cette fonction comme: p> N'oubliez pas ici que je me réfère ici. La fonction elle-même, ne pas l'appeler. p> vous utiliseriez cela avec #selector: p> fonction sans argument: p> #selector code> proposition a été effectué en conjonction avec un autre Proposition, spécifiant les fonctions Swift par leurs étiquettes d'argumentation. Donc, si j'ai une structure: p>
#selector(self.myOtherFunction(_:))
La réponse de @ eendje est incorrecte par son premier commentaire.
Je pense que c'est une meilleure réponse. p> Si certaines actions ont la cible, il devrait être présenté comme #selector (cible.method) code> ou voici un autre exemple p> #selector (cible.method (_:)) code> p>
UIGestureRecognizer(target: target action:#selector(target.handleGesture(_:))