2009-09-07 4 views
1

Как я могу взять значение текста NSButton, например, если я использую 2 кнопки с текстом Нажмите и Отмените, я хочу проверить, какая кнопка нажата, а затем показать сообщение с NSRunAlertPanel (...), какую кнопку я нажал .. что код должен я писать для него, когда нажимается кнопка.Как взять текстовое значение NSButton?

ответ

1

В вашем методе действий вы получаете аргумент, обычно называемый «отправитель», который является кнопкой. Таким образом, вы могли бы сделать что-то вроде:

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

Это лучше не использовать название для проверки кнопки, так как название может меняться в различных локализациях. Вместо этого вы можете указать tag, который является просто int и который может использоваться для идентификации разных отправителей.

+0

спасибо, это помогло мне. Я также попытаюсь проверить его с помощью тега. – maddy

1

Способ, которым это обычно реализуется, состоит в том, что каждая кнопка вызывает другое действие, поэтому нет необходимости проверять текст кнопки. См. The Target-Action Mechanism.

В общем, почти всегда плохая идея использовать видимый пользователем текст для управления программной логикой, потому что это затрудняет локализацию.

Возможно, вам также захочется описать вашу ситуацию дальше. Вы используете интерфейс Builder для создания вашего интерфейса? Являются ли эти кнопки в модальном диалоговом окне или окне документа?

+0

ладно, я понимаю вашу точку зрения. Я просто пытался попробовать, если бы мог это сделать, с модальным диалогом, да, я использовал построитель интерфейсов. спасибо за указатель .. :) – maddy

1

Вы можете указать кнопку на вкладке информации о классе окна инспектора в Interface Builder, а затем объявить ее как IBOutlet в своем делете приложения.

AppDelegate.h:

IBOutlet NSButton *ClickButton; 
IBOutlet NSButton *CancelButton; 

Затем подключить выход в Interface Builder, и просто проверить, чтобы увидеть, какая кнопка является отправителем в методе:

- (IBAction)buttonClicked:(id)sender 
{ 
    if (sender == ClickButton) { 
     NSLog(@"Click clicked."); 
    } 
    else { 
     NSLog(@"Cancel clicked."); 
    } 
} 
Смежные вопросы