2010-10-20 34 views
2

J'ai plusieurs NSButtons qui sont attachés à un seul IBAction. J'ai besoin de différencier à l'intérieur de la méthode entre les différents boutons. J'ai essayé ce qui suit, mais cela ne fonctionne pas:Comment obtenir le nom d'un NSButton de l'expéditeur

for (int i = 0; i++; i < 7) { 
    if (sender == [NSString stringWithFormat:@"button%i", i+1]) 
    { 
     NSLog(@"sender is button %i", i+1); 
    } 
} 

Comment cela peut-il fonctionner?

Répondre

5
-(IBAction)buttonPressed:(id)sender 
{ 
    switch ([sender tag]) 
    { 
    case 1: 
    //blah blah blah 
    break; 

    case 2: 
    //blah blah etc. 
    break; 
    } 
} 

Je suis opposé à faire la travailler pour vous, mais ....

remplacer cette ligne

if (sender == [NSString stringWithFormat:@"button%i", i+1]) 

avec cette ligne

if ([sender tag] == i) 

Notez aussi que le format de votre boucle est invalide:

for (int i = 0; i++; i < 7) 

s/b:

for (int i = 0; i < 7; i++) 
+0

Cela devient longtemps s'il y a beaucoup de boutons, C'est pourquoi je veux utiliser une boucle for pour éviter cela. –

+0

@awakeFromNib - Quelque chose ne va pas avec mon édition? – KevinDTimm

+0

Je ne comprends pas la partie où vous dites que le format est invalide. –

2

l'expéditeur dans l'action btnClicked est l'objet bouton qui a été cliqué. A partir de ce que vous devriez être en mesure d'obtenir les informations dont vous avez besoin

-(IBAction) btnClicked: (id) sender { 
    NSLog(@"Button clicked %@", sender); 
    // Do something here with the variable 'sender' 
} 

Si vous stockez une valeur dans la sender.tag, vous pouvez déterminer le bouton de cette façon aussi