Comment définir l'action pour une UIBarButtonItem en Swift
Comment l'action personnalisé UIBarButtonItem dans Swift être mis en?
Le code suivant réussit le bouton dans la barre de navigation:
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:nil)
self.navigationItem.rightBarButtonItem = b
Maintenant, je voudrais appeler func sayHello() { println("Hello") }
lorsque le bouton est touché. Mes efforts jusqu'à présent:
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:sayHello:)
// also with `sayHello` `sayHello()`, and `sayHello():`
et..
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:@selector(sayHello:))
// also with `sayHello` `sayHello()`, and `sayHello():`
et..
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:@selector(self.sayHello:))
// also with `self.sayHello` `self.sayHello()`, and `self.sayHello():`
Noter que sayHello()
apparaît dans l'intellisense, mais ne fonctionne pas.
Merci pour votre aide.
EDIT: Pour la postérité, les ouvrages suivants:
var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:"sayHello")
- vous passez des sélecteurs dans swift simplement en mettant le sélecteur dans une chaîne de caractères,
action: "sayHello"
- Je vous remercie beaucoup. Je suis sous pression pour obtenir ce et a été frustré.
- Cette question a été marqué comme un double de @selector() dans Swift?. Toutefois, cette question porte spécifiquement sur
UIBarButtonItem
tandis que l'autre ne l'est pas. Nécessitant des débutants afin de généraliser à toutes les utilisations deselector
peut être difficile pour eux, je suis à la suppression de la double statut, afin que les gens peuvent garder cette question à jour.
InformationsquelleAutor kmiklas | 2014-07-08
Vous devez vous connecter pour publier un commentaire.
De Swift 2.2, il y a une syntaxe spéciale pour le compilateur temps vérifié les sélecteurs. Il utilise la syntaxe:
#selector(methodName)
.Swift 3 et plus tard:
Si vous n'êtes pas sûr de ce que le nom de la méthode doit ressembler, il y a une version spéciale de la commande de copie est très utile. Placez votre curseur quelque part dans la base du nom de la méthode (par exemple, la méthode sayHello) et appuyez sur Maj+Contrôle+Option+C. Qui met le "Symbole" de votre clavier afin de le coller. Si vous aussi vous maintenez la touche Commande il copie la Qualifiée Nom de Symbole", dont le type.
Swift 2.3:
C'est parce que le premier nom de paramètre n'est pas requis dans Swift 2.3 lors d'un appel de méthode.
Vous pouvez en savoir plus sur la syntaxe swift.org ici: https://swift.org/blog/swift-2-2-new-features/#compile-time-checked-selectors
Selector("sayHello")
en coulisses par Swift de toute façon.Swift 4 exemple
@objc
à la déclaration de la fonction. Jusqu'Swift 4 cela a été implicitement déduite.