使菜单项显示窗口

时间:2009-06-13 06:34:19

标签: objective-c cocoa

我已经制作了一些代码来执行此操作,但因为它不起作用。我只是一个初学者,所以我可能完全错了,或者我可能错过了一些东西。无论哪种方式,请告诉我。这是我得到的代码。

[item setAction:(SEL)action {
        [window makeKeyAndOrderFront:NSApp];
    }

2 个答案:

答案 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