Passer les différents paramètres à une IBAction
Mon iPhone a beaucoup de boutons et je veux que tous les boutons d'appel à la même méthode, mais avec des paramètres différents.
Par exemple je veux appuyant sur un bouton pour appeler la méthode myMethod:
avec l'argument @"foo"
, et un deuxième bouton d'appel de la même méthode, mais avec l'argument @"bar"
.
OriginalL'auteur ahmed | 2010-01-22
Vous devez vous connecter pour publier un commentaire.
La soi-disant "IBActions" doit avoir une de ces signatures:
Vous ne pouvez pas ajouter d'autres paramètres. Néanmoins, vous pouvez utiliser
sender
(qui est button1 ou bouton2 dans votre cas) pour obtenir le paramètre:OriginalL'auteur kennytm
la vraie raison Vous ne pouvez pas ajouter un paramètre supplémentaire est que UIKIT va pousser les paramètres sur la pile.
donc, la seule façon est d'utiliser des balises.
SALE peut être de convertir un pointeur sur int et marquage de la touche:
REMARQUE: les paramètres DOIVENT être les garder statique .. ou allouer à l'aide de malloc (de plus en plus laids, code...).
NE PAS utiliser un local var: il sera alloué sur la pile sera supprimé après la sortie de la méthode de configuration.
OriginalL'auteur user1149183
Donner vos différents
UIButton
instances différentestag
les valeurs de propriété.Dans votre
IBAction
méthode-myMethod:
, vous pourriez alors faire quelque chose comme:Les valeurs
firstButtonTag
etsecondButtonTag
peut être stocké dans unenum
si vous voulez faire ce facile à entretenir.OriginalL'auteur Alex Reynolds
Vous ne pouvez pas passer des paramètres au travers d'une IBAction. Ce que je fais habituellement, c'est de donner les boutons de l'étiquette unique dans l'IB. Le tag est une valeur entière, donc j'ai u puis d'utiliser un simple tableau de recherche pour convertir le tag de valeur.
Dans ce cas, trois boutons mais les balises de 1 à 3:
OriginalL'auteur Stefan Arentz
(id)Sender est montre que, quel que soit u transmettre UIButton cliquez sur l'événement est de passer directement à cette méthode et n'importe qui de quel type il est , il prendra automatiquement comme si vous passer balise button puis il bouton étiquette en tant qu'expéditeur.tag etc
OriginalL'auteur Birju
Comme d'autres l'ont mentionné, vous ne pouvez pas vous passer de vos paramètres personnalisés dans une méthode d'action. Si vous n'aimez pas la solution à l'aide de balises vous pouvez également sous-classe UIButton avec votre classe personnalisée et ajouter votre paramètre. (Je ne voudrais pas ennuyer et il suffit d'utiliser les balises)
OriginalL'auteur Vladimir
Vous n'avez pas. Le seul paramètre qui est l'expéditeur de l'objet, que vous pouvez utiliser pour ont un comportement différent, mais ce que je voudrais faire est de définir 2 les méthodes d'action, qui, tout simplement, à son tour appel à la même méthode avec un paramètre différent, c'est à dire, vous avez de l':
Dans la défense de cette méthode (sans mauvais jeu de mots), j'aimerais ajouter qu'il fait plus clair quand vous passez en revue votre INTERFACE avec Interface Builder pour voir que les différents boutons en fait avoir des effets différents, ce qui est plus difficile à dire si ils appellent tous whateverAction:
OriginalL'auteur Pierre Lebeaupin