Objective c 如何获取NSButton的文本值?

Objective c 如何获取NSButton的文本值?,objective-c,xcode,Objective C,Xcode,如何获取NSButton文本值,例如,如果我使用了两个带有文本单击和取消的按钮,我想检查单击了哪个按钮,然后显示带有NSRunAlertPanel(…)的消息我单击了哪个按钮。单击按钮时我应该为其编写什么代码 在action方法中,您会得到一个参数,通常名为“sender”,即按钮。所以你可以这样做: - (IBAction)buttonClicked:(id)sender { if ([[sender title] isEqualToString:@"Click"]) {

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

在action方法中,您会得到一个参数,通常名为“sender”,即按钮。所以你可以这样做:

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

最好不要使用标题来检查按钮,因为标题可能会在不同的位置发生变化。您可以指定
标记
,它只是一个int,可用于标识不同的发送者。

通常的实现方式是每个按钮调用不同的操作,因此无需检查按钮的文本。看

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


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

您可以在Interface Builder的inspector窗口的class info选项卡中为按钮命名,然后在应用程序代理中将其声明为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.");
    }
}

谢谢,它帮助了我。我会试着用标签检查一下。好的,我明白你的意思。我只是想尝试一下,如果我能做到这一点,通过一个模态对话框,是的,我使用了interface builder。谢谢你的指点……)