2012-03-07 8 views
6

मैं निम्नलिखित कोडSetAction मेरी popUpButton अक्षम करने है

[myPopUpButton insertItemWithTitle:@"--Select one--" atIndex:0]; 
[myPopUpButton addItemsWithTitles:[NSArray arrayWithObjects:@"1.One",@"Two",@"Three", nil]]; 

[myPopUpButton sizeToFit]; 
[myPopUpButton setAction:@selector(popUpAction:)]; 
[fullBrowserView addSubview: myPopUpButton]; 

//PopUp Action 
-(void)popUpAction:(id)sender 
{ 
    NSLog(@"popUpAction"); 
} 

जब मैं popUpButton क्लिक करें, popUpButton के मेनू आइटम अक्षम हैं के साथ अपने NSPopUpButton बनाया है प्रोग्राम के रूप में। जब मैं इंटरफ़ेसबिल्डर का उपयोग करता हूं, तो यह आईबीएक्शन के साथ ठीक काम कर रहा है।

यह सेटएक्शन NSPopUp बटन के लिए क्यों काम नहीं कर रहा है?

उत्तर

12

ऐसा लगता है कि आप संदेश भेजने के लिए लक्ष्य ऑब्जेक्ट सेट नहीं कर रहे हैं। तो, कोड में, जोड़ें:

[myPopUpButton setTarget:self]; 

संभालने popUpAction: विधि एक ही कक्षा में है।

जब आप इंटरफ़ेस बिल्डर का उपयोग कर रहे हैं तो यह लक्ष्य के लिए चयनकर्ता कार्रवाई को वायरिंग-अप कर रहा है।

इस कॉल के लिए प्रलेखन से:

- (void)setTarget:(id)anObject

तो anObject nil है, लेकिन नियंत्रण अभी भी एक मान्य कार्रवाई संदेश सौंपा है, आवेदन प्रत्युत्तर श्रृंखला एक वस्तु है कि प्रतिक्रिया कर सकते हैं की तलाश में इस प्रकार है संदेश के लिए।

आपके मामले में, संदेश के लिए कोई ऑब्जेक्ट नहीं है।

2

यहां तक ​​कि अगर myPopUpButton लक्ष्य और कार्रवाई है, आप भी जोड़ सकता हूँ की जरूरत हो सकती:

[myPopUpButton setAutoenablesItems:NO]; 

अन्यथा, हर बार बटन क्लिक किया जाता है, यह स्वचालित रूप से अपने मेनू पर सभी आइटम निष्क्रिय कर सकते हैं। (मुझे एहसास है कि यह सवाल पुराना है, लेकिन अगर यह दूसरों की मदद करता है तो इस समाधान को पोस्ट करना)।

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