2009-09-07 68 views
1

我应该如何采取NSButton文本值,例如,如果我用2个按钮与文本点击和取消,我想检查哪个按钮被点击,然后显示与NSRunAlertPanel(...)的消息我点击了哪个按钮...什么我应该在点击按钮时为它写代码。如何获取NSButton的文本值?

回答

1

在你的操作方法中,你会得到一个参数,通常命名为'sender',它就是按钮。所以,你可以这样做:

- (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 2009-09-09 08:11:21

1

这是典型的实现方式是每个按钮都会调用不同的动作,因此不需要检查按钮的文本。见The Target-Action Mechanism

通常,使用用户可见文本来控制程序逻辑几乎总是一个坏主意,因为这会使本地化变得更加困难。

您可能还想进一步描述您的情况。你使用Interface Builder来创建你的界面吗?这些按钮是模态对话框还是文档窗口?

+0

好的,我明白你的观点。我只是试图尝试,如果我能做到这一点,模式对话框,是的,我使用的界面生成器。 感谢您的指针.. :) – maddy 2009-09-09 08:16:37

1

您可以在Interface Builder的检查器窗口的类信息选项卡中为按钮指定一个名称,然后在您的应用程序委托中将其声明为IBOutlet。

AppDelegate.h:

IBOutlet NSButton *ClickButton; 
IBOutlet NSButton *CancelButton; 

然后挂接在界面生成器插座,只需要检查哪个按钮是在你的方法发件人:

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