2009-06-13 14 views
1

これを行うためのコードを作成しましたが、動作しません。私はちょうど初心者ですので、私はこれを完全に間違っているかもしれないか、何かを逃したかもしれません。いずれにしても教えてください。ここに私が持っているコードがあります。メニュー項目を作成するウィンドウを表示する

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

答えて

5

あなたは無名関数を作ろうとしているようです。 AFAIK、Obj-Cはこれらをサポートしていません。基本的にあなたがしたいしたいの適切な方法としてactionを定義している:あなたはmakeKeyAndOrderFront:NSAppを渡している理由

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

...また

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

、私はわかりません。完全な署名は- (void)makeKeyAndOrderFront:(id)senderなので、通常はselfを渡すのが最も適切です(ただし、入力が何であるかはわかりませんが)。

Obj-CとCocoaに慣れ親しむために、2,で作業することをお勧めします。

+0

実際、NSAppはNSApplicationタイプの共有アプリケーションインスタンスです。 –

+0

ああクール、それを知らなかった!私はそれを反映するために投稿を編集します。ありがとう!私は[NSApplication sharedApplication]を使っています。 –

3

SELデータタイプは、クラス内のメソッドを参照する方法であるセレクタを指します。

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

とあなたのコントロールのSetActionはを呼び出します:何がしなければならないことはあなたのターゲットオブジェクトのクラスでメソッドを定義している。このような方法:

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

あなたは基本的に骨まで必要なように見えますしかし、ココアの。私はお勧めしますApple's Getting Started guide

関連する問題