Quelle est la meilleure façon de faire appel à une IBAction de avec-dans le code?
Dire, par exemple, j'ai un IBAction qui est relié à un UIButton dans interface builder.
- (IBAction)functionToBeCalled:(id)sender
{
//do something here
}
Dans mon code, dire, par exemple, dans une autre méthode, quelle est la meilleure façon de faire des appels que IBAction?
Si j'essaie de l'appeler comme cela, je reçois une erreur:
[self functionToBeCalled:];
Mais, si j'essaie de l'appeler comme ceci (triche un peu, je pense), il fonctionne très bien:
[self functionToBeCalled:0];
Quelle est la bonne façon de l'appeler correctement?
Vous devez vous connecter pour publier un commentaire.
La bonne façon est:
Pour passer un néant de l'expéditeur, indiquant qu'il n'était pas appelé par le biais du cadre habituel.
OU
De passer vous-même en tant qu'expéditeur, qui est également correcte.
Qui choisir dépend de ce qu'est exactement la fonction, et ce qu'il attend de l'expéditeur.
[self IBActionMethod];
Sémantiquement parlant, l'appel d'une
IBAction
doit être déclenchée par des événements de l'INTERFACE utilisateur (par exemple un bouton tap). Si vous avez besoin d'exécuter le même code à partir de plusieurs endroits, alors vous pouvez extraire le code de laIBAction
une méthode dédiée, et appeler cette méthode à partir de deux endroits:Cela permet de faire de la logique supplémentaire en fonction de l'expéditeur (peut-être que vous pouvez attribuer la même action à plusieurs boutons et de décider quoi faire en fonction de la
sender
paramètre). Et aussi réduit la quantité de code que vous devez écrire dans leIBAction
(ce qui maintient votre contrôleur de mise en œuvre propre).