bonsoir
Lorsque l’on crée une connexion de type Action, parfois on doit sélectionner l’argument Sender, parfois None et parfois Any.
Mais à quoi correspond le Sender ? Dans le cour sur le convertisseur, Max dit qu’il n’y en a pas besoin… ok il n’y en a pas besoin… mais pourquoi ?
Dans le cas d’une action sur un bouton, le sender sera le bouton sur lequel tu as appuyé (si je ne dis pas de bêtise)
Ce qui permet par exemple, d’avoir une même fonction pour des boutons différents, mais de savoir réagir en fonction de sur quel bouton tu as appuyé
Le Sender est un lien vers l’objet graphique ayant déclenché l’action. Comme le dis Alexandre, on peut avoir plusieurs objets appelant une seule action. Le Sender permet alors d’avoir des informations sur qui a appelé l’action.
Par exemple, Maxime utilise cette technique dans sa calculatrice en Swift 4. Il y a 10 boutons pour les nombres (0 à 9), mais une seule action. Chaque bouton est identifié par son tag (une valeur numérique associée à chaque vue ou contrôle graphique, dont la valeur vaut 0 par défaut).
A chaque appel de la fonction d’action, elle utilise le Sender pour savoir quel bouton a été activé, et consulte le tag pour connaître la valeur numérique demandé.
None signifie que Xcode n’a pas besoin de connaître le Sender. Si c’est juste pour une chose simple comme détecter un touch sur un bouton, on se fiche d’obtenir des informations supplémentaires sur le contrôle graphique utilisé.
Any implique que le Sender est générique. C’est utile si tu décides de faire une interface complexe où plusieurs contrôles graphiques de type différents doivent appeler la même action. Genre un UIButton, un UISlider et un UIStepper. Le code doit alors faire des tests pour identifier la nature du contrôle graphique et la manière de récupérer ces informations. Tu n’auras probablement jamais à coder ce genre de choses. Je l’ai fait une fois dans le cadre d’un exercice pour un MOOC, c’est tout…
En effet même si je ne l’ai pas répété dans le chapitre sur le convertisseur, je pense l’avoir expliqué dans le chapitre précédent, celui de la calculatrice.
Il faut voir une action comme un événement qui lance (send) un appel. Le sender est donc l’objet à l’origine de l’événement.