2009-09-08 9 views
5

NSMenuを作成するには、Windowsエクスプローラで[Send To]オプションを選択して、ファイルを送信できる添付デバイスを表示するオプションを選択します。動的アクションを持つNSMenuを取得する方法

私の研究から、関数にもパラメータを送るセレクタを定義することはできないと思われますので、@selector(@"sendToVolume:1")の場合はありません。それで、アイテムの数が不明なときにどのアイテムがクリックされたかに基づいて、どのように他のタスクを実行することができますか?

答えて

15

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

-(IBAction)sendTo:(id)sender { 
    id destination = [sender representedObject]; 
} 
1

をしかし、あなたはパラメータでセレクタを使用することができます。セレクタが呼び出されると

、あなたが戻っrepresentedObjectを得ることができます!さて、最初は@selector(someMethod:)を有するようなものであるが、最後の二つは、セレクタにパラメータを送信するために使用される

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

NSObjectこのような定義された3つのメソッドを有しています。たとえば、次のように

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

、あなたはこのようにそれを使用することができます。

[appController performSelector:@selector(sendToVolume:) 
       withObject:[NSNumber numberWithInt:1]]; 
関連する問題