これを行うためのコードを作成しましたが、動作しません。私はちょうど初心者ですので、私はこれを完全に間違っているかもしれないか、何かを逃したかもしれません。いずれにしても教えてください。ここに私が持っているコードがあります。メニュー項目を作成するウィンドウを表示する
[item setAction:(SEL)action {
[window makeKeyAndOrderFront:NSApp];
}
これを行うためのコードを作成しましたが、動作しません。私はちょうど初心者ですので、私はこれを完全に間違っているかもしれないか、何かを逃したかもしれません。いずれにしても教えてください。ここに私が持っているコードがあります。メニュー項目を作成するウィンドウを表示する
[item setAction:(SEL)action {
[window makeKeyAndOrderFront:NSApp];
}
あなたは無名関数を作ろうとしているようです。 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,で作業することをお勧めします。
SELデータタイプは、クラス内のメソッドを参照する方法であるセレクタを指します。
- (void)doSomething:(id)sender {
[window makeKeyAndOrderFront:sender];
}
とあなたのコントロールのSetActionはを呼び出します:何がしなければならないことはあなたのターゲットオブジェクトのクラスでメソッドを定義している。このような方法:
[item setAction:@selector(doSomething:)];
あなたは基本的に骨まで必要なように見えますしかし、ココアの。私はお勧めしますApple's Getting Started guide
実際、NSAppはNSApplicationタイプの共有アプリケーションインスタンスです。 –
ああクール、それを知らなかった!私はそれを反映するために投稿を編集します。ありがとう!私は[NSApplication sharedApplication]を使っています。 –