我只想添加一个带有setAction参数的NSButton。
NSRect frame = NSMakeRect(10, 40, 90, 40);
NSButton* pushButton = [[NSButton alloc] initWithFrame: frame];
[pushButton setTarget:self];
[pushButton setAction:@selector(myAction:)];但是我想给函数myAction加上一个参数...
怎么做到的?
谢谢。
发布于 2013-01-01 04:27:45
但是我想给myAction函数加上一个参数。
怎么做到的?
你不能这么做。
…如果有多个按钮使用这种方法,我们不能区分发送者(只有标题)……
有三种方法可以判断哪个按钮(或其他控件)正在与您对话:
sender与每个出口进行比较。标签的问题在于前面提到的重复性。也很容易忽略每个标签的名称,所以你最终会看到像if ([sender tag] == 42)这样的代码,而不知道/必须查找哪个控件是#42。
outlets的问题是,您的操作方法可能会变得非常长,而且无论如何都可能在同一个方法中做多个不同的事情,而这些事情是没有意义的。(这也是标签的问题。)
所以,我通常更喜欢第三种解决方案。为将您作为目标的每个按钮(或其他控件)创建一个action方法。您通常会将方法和按钮命名为相同的名称(如save:和“Save”)或非常相似的名称(如terminate:和“Quit”),因此只需阅读每个方法,就可以知道它属于哪个按钮。
发布于 2013-01-01 01:30:38
我从未以编程方式创建过NSButton,但我认为您只需要创建如下方法:
- (void) myAction: (NSButton*)button{
//your code
}就是这样!!
发布于 2013-01-01 02:23:18
您可以使用关联的对象来传递参数。
你可以参考:http://labs.vectorform.com/2011/07/objective-c-associated-objects/
http://www.cocoanetics.com/2012/06/associated-objects/
https://stackoverflow.com/questions/14104191
复制相似问题