5

ファイルを送信できる接続されたデバイスを一覧表示する Windows エクスプローラーにある [送信先] オプションと同様のオプションを使用して NSMenu を作成したいと考えています。

私の調査から、関数にパラメーターを送信するセレクターを定義することもできないように思われるため、@selector(@"sendToVolume:1"). では、アイテムの数が不明な場合に、どのアイテムがクリックされたかに基づいて、メニューに別のタスクを実行させるにはどうすればよいでしょうか?

4

2 に答える 2

16

NSMenuItem には、representedObject項目が表す宛先への参照など、必要なものを格納するために使用できるプロパティがあります。

セレクターが呼び出されると、presentedObject を取得できます。

-(IBAction)sendTo:(id)sender {
    id destination = [sender representedObject];
}
于 2009-09-08T09:18:13.603 に答える
1

しかし、パラメーターでセレクターを使用することはできます! NSObject次のように定義された 3 つのメソッドがあります。

-performSelector:
-performSelector:withObject:
-performSelector:withObject:withObject:

さて、最初は を持つようなもの@selector(someMethod:)ですが、最後の 2 つはパラメーターをセレクターに送信するために使用されます。例えば:

-(void)sendToVolume:(NSNumber)nr { 
//do stuff
}

次に、次のように使用できます。

[appController performSelector:@selector(sendToVolume:) 
               withObject:[NSNumber numberWithInt:1]];
于 2009-09-14T19:26:21.270 に答える