2009-09-08 13 views
5

मैं विंडोज एक्सप्लोरर में आपको भेजें टू विकल्प के समान एक विकल्प के साथ एक एनएसएमएनयू बनाना चाहता हूं, जहां यह फाइलों को सूचीबद्ध करेगा जिसमें आप फाइल भेज सकते हैं।डायनामिक क्रियाओं के साथ एनएसईएनयूयू कैसे करें

मेरे शोध से ऐसा लगता है कि एक चयनकर्ता को परिभाषित करना संभव नहीं है जो फ़ंक्शन को पैरामीटर भेजता है, इसलिए यह @selector(@"sendToVolume:1") होने का मामला नहीं है। तो आइटम की संख्या अज्ञात होने पर मेनू पर क्लिक करने के आधार पर मेनू एक अलग कार्य कैसे कर सकता है?

उत्तर

15

NSMenuItem में representedObject संपत्ति है, जिसका उपयोग आप जो कुछ भी चाहते हैं उसे स्टोर करने के लिए किया जा सकता है, जैसे वस्तु का प्रतिनिधित्व करने वाले गंतव्य के संदर्भ में।

जब चयनकर्ता शुरू हो जाती है, तो आप representedObject वापस प्राप्त कर सकते:

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

लेकिन तुम मानकों के साथ चयनकर्ताओं का उपयोग कर सकते हैं!

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

अब, पहले @selector(someMethod:) होने की तरह है, लेकिन पिछले दो चयनकर्ता के मापदंडों को भेजने के लिए उपयोग किया जाता है: NSObject तीन तरीकों इस तरह परिभाषित किया गया है। उदाहरण के लिए:

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

तो आप इस तरह इसका इस्तेमाल कर सकते हैं:

[appController performSelector:@selector(sendToVolume:) 
       withObject:[NSNumber numberWithInt:1]]; 
संबंधित मुद्दे