5

配列に基づいて動的にメニューを作成していますが、Finder でフォルダーを開く IBAction にリンクされたサブメニューがあります。開くフォルダーは、初期配列内のオブジェクトのプロパティに基づいています。

NSMenuItem アクションを IBAction にリンクし、この配列を動的に作成するときにこのディレクトリ変数を渡す方法はありますか?

または、IBAction に移動し、配列に対して NSMenuItem を参照してディレクトリを解決する必要がありますか?

例えば

person = [[Person alloc] init];
// person is assigned
subMenu = [[NSMenu alloc] init];
[subMenu addItemWithTitle:@"Open folder" action:@selector(openDirectory:person.directory) keyEquivalent:@""];
4

2 に答える 2

4

これが私が求めていたものです。

NSMenuItem *menuItem;
menuItem = [subMenu addItemWithTitle:@"Open folder" action:@selector(openDirectory:person.directory) keyEquivalent:@""];
[menuItem setRepresentedObject:person];

次に、私のIBActionで、ディレクトリを抽出するために次のようなことをしました:

- (IBAction)openDirectory:sender {
    Person *person = [sender representedObject];
    NSLog(@"directory: %@",person.directory);
于 2012-03-08T08:07:41.830 に答える
3

アクションは""パラメータのみを取り、(id) senderアクションを呼び出したオブジェクトが送信されることになっています。

ただし、アクションメソッドがObjective Cオブジェクト(シングルトンなどではない)に存在する場合は、アクションからそのオブジェクトのプロパティを簡単に参照できます。

うまくいけば、これはあなたにとって明らかであるか、そうでない場合は、コードを少し見せてIBAction、それがどこにあり、どのように宣言されているかを教えてください。

于 2012-03-08T08:05:50.730 に答える