Obtenir le texte du bouton de IBAction - iPhone
Lorsqu'une IBAction est appelé:
-(IBAction) onClick1: (id) sender;
Ce qui est transmis à l'expéditeur? Depuis qu'il est raccordé par le biais de l'IB, je ne suis pas vraiment sûr. Ma question est de savoir comment obtenir le texte du bouton pour être l'objet passé (NSString le plus probable) pour que je puisse l'appeler à l'intérieur de l'action mise en œuvre.
-(IBAction) onClick1: (id) sender {
NSLog(@"User clicked %@", sender);
//Do something here with the variable 'sender'
}
Vous devez vous connecter pour publier un commentaire.
C'est en fait:
sender
n'est pas unNSString
, il est de typeid
. C'est juste le contrôle qui a envoyé l'événement. Donc, si votre méthode est déclenché sur un clic sur un bouton, leUIButton
objet qui a été cliqué sera envoyé. Vous pouvez accéder à l'ensemble de la normeUIButton
des méthodes et des propriétés par programmation.id
est juste pour le générique de "n'importe quel objet de type". C'est fondamentalement semblable à unvoid *
en C/C++, sauf intelligent. C'est ce que l'expéditeur est. Pour un bouton, il serait leNSButton
instance qui a envoyé le message, par exemple.La
sender
devrait être le contrôle de l'origine de l'action. Cependant, vous ne devriez pas supposer son type et devrait plutôt laisser défini comme unid
. Au lieu de cela, vérifier pour la classe de l'objet dans la méthode comme suit:Il suffit d'écrire le code suivant
Thats it... vous avez fait!!!
Expéditeur doit être définie comme étant de type id, pas int ou NSString. L'expéditeur est l'objet qui appelle la méthode; si vous accroché jusqu'à un bouton, il sera un UIButton, si c'est un champ de texte, un objet UITextField. Vous pouvez l'utiliser pour obtenir des informations à partir de la commande (par exemple le champ de texte actuel de la chaîne de valeur), ou le comparer à un IBOutlet variable d'instance si vous avez plusieurs contrôles accroché à la même méthode d'action.
Vous pouvez simplement utiliser ce qui suit pour obtenir le label du bouton et de déterminer lequel a été cliqué:
Pour répondre à votre question, l'id de l'objet à partir de l'IB.
Pour extraire le texte à partir du bouton: