2011-02-26 18 views
8

मेरे पास एक एनएसएमएनयूइटम नामक इतिहास है जो एनएसएनएनयू मेनू में रहता है। जब मेरा प्रोग्राम शुरू होता है तो इतिहास में उपमेनू नहीं होता है, इसलिए यह अक्षम हो जाता है। फिर किसी बिंदु पर, मुझे इतिहास के लिए उपमेनू की आवश्यकता है, इसलिए मैं इसे बना देता हूं, इसे इतिहास का उपमेनू बना देता हूं। एक तीर इतिहास के बगल में दिखाई देता है जो मुझे बताता है कि उपमेनू वहां है। लेकिन इतिहास अभी भी अक्षम है। मैंने सेट सक्षम किया है लेकिन काम नहीं करता है। कृपया मदद करे। यहां मेरा कोड:NSMenuItem सक्षम नहीं किया जा रहा है?

यह तब होता है जब मैं अपना मेनू और इतिहास बना देता हूं क्योंकि आप मेनू में एनएसएमएनयूइटम देख सकते हैं।

menu = [[NSMenu alloc] initWithTitle:@"Menu"]; 
[[menu addItemWithTitle:@"History" action:nil keyEquivalent:@""] setTarget:self]; 
[[menu addItemWithTitle:@"Settings" action:@selector(loadSettings:) keyEquivalent:@""] setTarget:self]; 
[[menu addItemWithTitle:@"Quit" action:@selector(terminateApp:) keyEquivalent:@""] setTarget:self]; 

इस बिंदु पर, इतिहास अक्षम (गहरा हुआ) है। तो कार्यक्रम में कहीं मैं तो इतिहास के लिए एक सबमेनू की आवश्यकता है:

 if (historyMenu == nil) { 
     historyMenu = [[NSMenu alloc] initWithTitle:@"Lyrics history"]; 
     [menu setSubmenu:historyMenu forItem:[menu itemWithTitle:@"History"]]; 
    } 

मैं अब इतिहास के बगल में एक तीर देखते हैं, लेकिन यह अभी भी धुंधला है।

कृपया मदद करें, मैं इसे पिछले 2 घंटों के लिए समझने की कोशिश कर रहा हूं। धन्यवाद।

उत्तर

8

आप लक्ष्य निर्धारित कर रहे हैं लेकिन एक शून्य कार्रवाई कर रहे हैं। लक्ष्य निर्धारित करने का प्रयास न करें। यह हर समय सक्षम हो सकता है जिस स्थिति में आपको मेनू आइटम को मैन्युअल रूप से सक्षम या अक्षम करना पड़ सकता है।

Here is the documentation मेनू आइटम कैसे सक्षम होते हैं।

+0

धन्यवाद किया आत्म करने के लिए लक्ष्य निर्धारित किया है, लेकिन अगर मैं एक एक्शन विधि सेट नहीं करता तो क्या होगा? असल में, मुझे लक्ष्य निर्धारित करने की भी आवश्यकता नहीं है, मुझे नहीं पता कि मेरे पास यह क्यों है। वैसे भी, मैं कोशिश करता हूं कि आपने क्या कहा, मदद के लिए धन्यवाद। – user635064

2

मैं ओवरराइड करने के लिए किया था validateMenuItem विधि return true रहे हैं:

override func validateMenuItem(menuItem: NSMenuItem) -> Bool { 
    return true 
} 

यह वास्तव में सत्यापन विधि का उपयोग नहीं किया, जब तक मैं हालांकि तरह आप के साथ

menu.addItemWithTitle("An Item", action: #selector(itemPressed), keyEquivalent: "")?.target = self 
+0

धन्यवाद यह मेरे लिए काम किया। – adev

संबंधित मुद्दे