如何获取NSButton的文本值?

时间:2009-09-07 14:22:56

标签: objective-c xcode

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

3 个答案:

答案 0 :(得分: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,可用于标识不同的发件人。

答案 1 :(得分:1)

通常实现的方式是每个按钮会调用不同的动作,因此不需要检查按钮的文本。请参阅The Target-Action Mechanism

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

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

答案 2 :(得分: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.");
    }
}