2009-06-13 54 views
1

我已經做了一些代碼來做到這一點,但因爲它不起作用。我只是一個初學者,所以我可能會做這個完全錯誤的,或者我可能錯過了一些東西。無論哪種方式,請告訴我。這是我得到的代碼。製作一個菜單項顯示一個窗口

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

回答

5

它看起來像你試圖做一個匿名函數。 AFAIK,Obj-C不支持這些。基本上,想你想要做的就是定義action作爲一個適當的方法:

[item setAction:@selector(action:)]; 

...

-(void)action:(id)sender{ 
    [window makeKeyAndOrderFront:self]; 
} 

另外,我不知道爲什麼你傳遞給NSAppmakeKeyAndOrderFront:。完整的簽名是- (void)makeKeyAndOrderFront:(id)sender,所以通過self通常是最合適的(雖然我甚至不知道輸入是幹什麼的!)。

我建議你通過幾個tutorials來熟悉Obj-C和Cocoa。

+0

實際上,NSApp是NSApplication類型的共享應用程序實例。 – 2009-06-13 08:35:15

3

的SEL數據類型是指選擇,這是指在一個類中的方法的一種方式。你所要做的就是在你的目標對象的類定義的方法:

- (void)doSomething:(id)sender { 
    [window makeKeyAndOrderFront:sender]; 
} 

,並調用控件的setAction命令:方法是這樣的:

[item setAction:@selector(doSomething:)]; 

它看起來像你需要鑽研的基礎知識可可,但是。我可以建議Apple's Getting Started guide