2009-09-07 4 views
1

comment dois-je prendre la valeur de texte NSButton, par exemple si j'utilise 2 boutons avec le texte Click and Cancel, je veux vérifier quel bouton est cliqué puis montrer un message avec NSRunAlertPanel (...) sur quel bouton j'ai cliqué .. code dois-je écrire pour quand le bouton est cliqué.Comment prendre la valeur de texte de NSButton?

Répondre

1

Dans votre méthode d'action, vous obtenez un argument, généralement appelé 'expéditeur', qui est le bouton. Ainsi, vous pouvez faire quelque chose comme:

- (IBAction)buttonClicked:(id)sender 
{ 
    if ([[sender title] isEqualToString:@"Click"]) { 
     NSLog(@"Click clicked."); 
    } else if ([[sender title] isEqualToString:@"Cancel"]) { 
     NSLog(@"Cancel clicked."); 
    } 
} 

Il est préférable de ne pas utiliser le titre pour le contrôle du bouton, car le titre pourrait changer dans différentes localisations. Vous pouvez spécifier le tag à la place, qui est simplement un int et qui peut être utilisé pour identifier différents expéditeurs.

+0

merci, il m'a aidé. Je vais essayer de vérifier avec le tag aussi. – maddy

1

La façon dont cela est généralement mis en œuvre est que chaque bouton appelle une action différente, il n'y aurait donc pas besoin de vérifier le texte du bouton. Voir The Target-Action Mechanism.

En général, il est presque toujours une mauvaise idée d'utiliser le texte visible de l'utilisateur pour contrôler la logique du programme car cela rend la localisation plus difficile.

Vous pourriez également décrire votre situation plus en détail. Utilisez-vous Interface Builder pour créer votre interface? Ces boutons sont-ils dans une boîte de dialogue modale ou une fenêtre de document?

+0

D'accord, je comprends votre point de vue. J'essayais juste d'essayer si je pouvais le faire, avec un dialogue modal, oui j'ai utilisé le constructeur d'interface. merci pour le pointeur .. :) – maddy

1

Vous pouvez attribuer un nom au bouton dans l'onglet Informations sur la classe de la fenêtre Inspecteur d'Interface Builder, puis le déclarer comme un IBOutlet dans votre délégué d'application.

AppDelegate.h:

IBOutlet NSButton *ClickButton; 
IBOutlet NSButton *CancelButton; 

Accrocher ensuite la sortie dans Interface Builder, et il suffit de cocher pour voir quel bouton est l'expéditeur dans votre méthode:

- (IBAction)buttonClicked:(id)sender 
{ 
    if (sender == ClickButton) { 
     NSLog(@"Click clicked."); 
    } 
    else { 
     NSLog(@"Cancel clicked."); 
    } 
} 
Questions connexes