Objective-C,改变 NSButton 功能?

Posted

技术标签:

【中文标题】Objective-C,改变 NSButton 功能?【英文标题】:Objective-C, changing NSButton functionality? 【发布时间】:2012-09-09 21:08:43 【问题描述】:

如何更改以前使用的按钮的功能?例如,如果我有一个执行“继续/取消”的按钮,假设您“继续”,那么该按钮会更改为“查看/返回”之类的内容吗?基本上我想将相同的按钮重新用于其他事情,但因为我不知道有人可以如何帮助我更好地理解它。谢谢。

- (IBAction)someButton:(NSButton *)sender 

       if ([someString isEqualToString:someThing]) 
            isAllowed = YES;
            [oneButton setTitle:@"Proceed"];
            [self continue];
        
        else 
            [oneButton setTitle:@"Cancel"];
            return;
            
        

- (void)continue 

// I would like to make someButton (above) take on different functionality 
// here if that's even possible. such as:

  [oneButton setTitle:@"View"];
  [self whatNow];

【问题讨论】:

【参考方案1】:

在您的程序生命周期的某个时刻,您可以将 NSButton 的先前目标和/或操作替换为所需的目标和/或操作。

[oneButton setAction:@selector(continue)];

这将导致调用您的 continue 选择器,而不是 oneButton 实例的 someButton:

OBS:请注意您的选择器,因为 NIB 文件中的选择器有一个参数 @selector(someButton:),而您正在创建的选择器没有任何参数,所以它保持为 @selector(continue)

如此处所示:Cocoa forControlEvents:WHATGOESHERE

【讨论】:

谢谢 - 我会试试看。我还有一个问题;是否可以让一个按钮同时针对两种方法? @JoeHabadas 是的,当然!同一个 UIControlEvent 可以有多个目标/动作对,请记住,它们将按照添加的顺序被触发 另外,可以一次删除所有目标/操作:***.com/questions/3340825/… - 我将为此添加一个编辑:) 非常感谢费利佩。我正在尝试将其与 Cocoa 一起使用;你知道Mac相当于UIControlEventAllEvents等吗? @JoeHabadas 嗯抱歉,我完全忽略了问题中的nsbutton 并选择了 uibutton 方法

以上是关于Objective-C,改变 NSButton 功能?的主要内容,如果未能解决你的问题,请参考以下文章

objective-c 我想点击一下按钮,使按钮能出现一个动画移动效果,请高手指教!

NSButton 值为 1

如何确定 NSButton 是不是为复选框?

Cocoa:当它在NSButton上时更改光标

旋转 NSButton 不起作用

在 C# MonoMac (NSButton, NSLabel) 中动态创建控件/对象