2009-09-08 12 views
5

Windows Gezgini'nde, dosyayı gönderebileceğiniz ek aygıtları listeleyeceği Bul seçeneğine benzer bir seçenekle bir NSMenu oluşturmak istiyorum.Dinamik eylemlere sahip bir NSMenu nasıl yapılır

Araştırmamdan, fonksiyona bir parametre gönderen bir seçici tanımlamak mümkün görünmüyor, bu yüzden @selector(@"sendToVolume:1")'a sahip olma durumu söz konusu değil. Öyleyse, öğelerin sayısı bilinmediğinde hangi öğenin tıklandığına bağlı olarak başka bir görevi nasıl gerçekleştirebilirim?

cevap

15

NSMenuItem öğesinin temsil ettiği hedefe bir başvuru gibi, istediğiniz herhangi bir şeyi depolamak için kullanılabilecek bir representedObject özelliğine sahiptir.

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

Ama parametrelerle seçicileri kullanabilirsiniz: seçici çağrıldığında

, daha sonra geri representedObject alabilirsiniz!

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

Şimdi, ilk @selector(someMethod:) olması gibi, ancak son iki selektör parametreleri göndermek için kullanılır: NSObject böyle tanımlanmış üç yöntem vardır. Örneğin:

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

o zaman bu gibi kullanabilirsiniz:

[appController performSelector:@selector(sendToVolume:) 
       withObject:[NSNumber numberWithInt:1]]; 
İlgili konular