我已經做了一些代碼來做到這一點,但因爲它不起作用。我只是一個初學者,所以我可能會做這個完全錯誤的,或者我可能錯過了一些東西。無論哪種方式,請告訴我。這是我得到的代碼。製作一個菜單項顯示一個窗口
[item setAction:(SEL)action {
[window makeKeyAndOrderFront:NSApp];
}
我已經做了一些代碼來做到這一點,但因爲它不起作用。我只是一個初學者,所以我可能會做這個完全錯誤的,或者我可能錯過了一些東西。無論哪種方式,請告訴我。這是我得到的代碼。製作一個菜單項顯示一個窗口
[item setAction:(SEL)action {
[window makeKeyAndOrderFront:NSApp];
}
它看起來像你試圖做一個匿名函數。 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。
的SEL數據類型是指選擇,這是指在一個類中的方法的一種方式。你所要做的就是在你的目標對象的類定義的方法:
- (void)doSomething:(id)sender {
[window makeKeyAndOrderFront:sender];
}
,並調用控件的setAction命令:方法是這樣的:
[item setAction:@selector(doSomething:)];
它看起來像你需要鑽研的基礎知識可可,但是。我可以建議Apple's Getting Started guide
實際上,NSApp是NSApplication類型的共享應用程序實例。 – 2009-06-13 08:35:15