我应该如何使用NSButton文本值,例如,如果我使用带有文本的2个按钮单击和取消,我想检查单击了哪个按钮,然后显示带有NSRunAlertPanel(...)的消息我点击了哪个按钮..单击按钮时我应该为它编写什么代码。
答案 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.");
}
}