我已经制作了一些代码来执行此操作,但因为它不起作用。我只是一个初学者,所以我可能完全错了,或者我可能错过了一些东西。无论哪种方式,请告诉我。这是我得到的代码。
[item setAction:(SEL)action {
[window makeKeyAndOrderFront:NSApp];
}
答案 0 :(得分:5)
看起来你正在尝试制作一个匿名函数。 AFAIK,Obj-C不支持这些。基本上你想要做的是将action
定义为正确的方法:
[item setAction:@selector(action:)];
...
-(void)action:(id)sender{
[window makeKeyAndOrderFront:self];
}
此外,我不确定您将NSApp
传递给makeKeyAndOrderFront:
的原因。完整签名是- (void)makeKeyAndOrderFront:(id)sender
,因此通过self
通常是最合适的(尽管我甚至不确定输入是做什么的!)。
我建议您通过一些tutorials来熟悉Obj-C和Cocoa。
答案 1 :(得分:3)
SEL数据类型是指选择器,它是一种引用类中方法的方法。你要做的是在目标对象的类中定义一个方法:
- (void)doSomething:(id)sender {
[window makeKeyAndOrderFront:sender];
}
并按照以下方式调用控件的setAction:方法:
[item setAction:@selector(doSomething:)];
然而,看起来你需要了解Cocoa的基础知识。我可以建议Apple's Getting Started guide