Comment dois-je appeler une fonction du bouton lorsque le bouton n'est pas pressé
J'ai une IBAction connecté à un bouton, et je voulais savoir si il existe un moyen pour exécuter cette fonction, même si le bouton n'est pas enfoncé. C'est ce que j'ai essayé...
Note: je suis à l'utilisation de swift pour ce projet.
//I get an error when I type this code?
self.buttonPressed()
@IBAction func buttonPressed(sender: AnyObject) {
print("Called Action")
}
Quelle est l'erreur? Au moment de l'exécution ou de l'erreur de build?
Vous devez passer un "expéditeur" argument. La convention est que les méthodes commencent par une lettre minuscule, les classes avec une lettre majuscule.
ce expéditeur argument puis-je passer?
Si
Vous devez passer un "expéditeur" argument. La convention est que les méthodes commencent par une lettre minuscule, les classes avec une lettre majuscule.
ce expéditeur argument puis-je passer?
Si
sender
n'est pas utilisé dans l'action, vous pouvez passer n'importe quel objet, self
est commun. Si sender
est utilisé, vous devez passer un objet qui est acceptable pour l'action.OriginalL'auteur nachshon fertel | 2015-05-01
Vous devez vous connecter pour publier un commentaire.
Faire de votre expéditeur argument facultatif et passer nil à ButtonPressed.
OriginalL'auteur Satachito
Un moyen serait de créer un lien de votre bouton jusqu'à son interface builder bouton et la passer dans votre fonction, quand vous l'appelez.
Sinon, définir votre fonction de la façon, alors vous serez en mesure d'appeler votre méthode de la même manière que vous avez fait avant:
Ouais, je suis vraiment aimer paramètres optionnels dans swift! Agréable et propre code 🙂
L' '= nil " ne fonctionne pas pour moi. Ce n'est que faire exactement, d'ailleurs?
l' '= nil " ne fonctionnera que si le type est défini comme étant facultatifs (la ? à la fin de AnyObject). Cela signifie essentiellement que si la méthode est appelée sans paramètres par défaut définie
sender
à néant. Cela fait-il sens?Qui a plus de sens. J'ai essayé de passer néant à l'appel, peut-être que c'est pourquoi il ne fonctionnait pas. Tout ce que j'ai à faire est d'appeler la fonction sans passer tous les paramètres, et il va automatiquement envoyer dans le néant, à droite?
OriginalL'auteur Chackle
Votre
ButtonPressed
fonction des besoins d'un argumentsender
et pourtant vous n'êtes pas la réussite de tous, quand vous l'appelez. Toutefois, si vous ne le faites pas par programmation, alors de toute évidence vous n'avez pas desender
.Deux façons de contourner ce problème:
AnyObject?
au lieu deAnyObject
) et appelerself.ButtonPress(nil)
. Je viens d'essayer et ça marche.performButtonPress()
. Appel à partir de l'intérieur IBAction prise, et si vous voulez appuyer sur le bouton par programmation, appeler directementperformButtonPress()
.OriginalL'auteur Matthew Quiros
Vous devez utiliser le "soi" comme "expéditeur", par exemple:
ou une version plus simple
Testés dans Swift 3
OriginalL'auteur ooenomel2003
Appeler un bouton d'action à l'aide du format suivant: Swift 3
Pour appeler le bouton d'action:
OriginalL'auteur Ram Madhavan
OriginalL'auteur Urvish Modi