ファイルを送信できる接続されたデバイスを一覧表示する Windows エクスプローラーにある [送信先] オプションと同様のオプションを使用して NSMenu を作成したいと考えています。
私の調査から、関数にパラメーターを送信するセレクターを定義することもできないように思われるため、@selector(@"sendToVolume:1")
. では、アイテムの数が不明な場合に、どのアイテムがクリックされたかに基づいて、メニューに別のタスクを実行させるにはどうすればよいでしょうか?
NSMenuItem には、representedObject
項目が表す宛先への参照など、必要なものを格納するために使用できるプロパティがあります。
セレクターが呼び出されると、presentedObject を取得できます。
-(IBAction)sendTo:(id)sender {
id destination = [sender representedObject];
}
しかし、パラメーターでセレクターを使用することはできます! 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]];