2009-09-21 13 views
12

मैंने यूनाविगेशनबार पर कई एप्लिकेशन देखे हैं जिनमें एक जानकारी बटन है (इसके चारों ओर एक सर्कल वाला अक्षर "i")। मैं इस प्रकार का बटन कैसे जोड़ूं?आईफोन पर यूनाविगेशनबार पर जानकारी बटन कैसे बनाएं

उत्तर

31

पिछला उत्तर करीब था, काफी संकलित नहीं हुआ था। यहाँ तुम क्या वास्तव में चाहते हैं:

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton]; 
+0

कोई "showInfoView" विधि को लागू करने के बारे में कैसे जाता है जिसे आपने इंगित किया था? – Shawn

+0

शॉन, बस है - (शून्य) showInfoView: (आईडी) प्रेषक {आपके कार्यान्वयन में कहीं और। यदि वहां नहीं है: विधि के अंत में, कोई तर्क पारित नहीं किया जाएगा और आप बिना: (आईडी) प्रेषक के कर सकते हैं। – quantumpotato

0

आपको नेविगेशन में एक "इन्फो लाइट" प्रकार बटन जोड़ने में सक्षम होना चाहिए, जो दृश्य नियंत्रक का संकेत है जो UINavigationController वर्तमान में प्रदर्शित हो रहा है। ऐसा कुछ आपके कंट्रोल कंट्रोलर कोड में जा सकता है:

- (void) viewDidLoad { 
    UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    // set your button's target and selector for whatever action here. 
    self.navigationItem.rightBarButtonItem.customView = info; 
} 
+0

केवलर, कृपया अपना उत्तर संशोधित करें .. बटन टाइप एक पठनीय संपत्ति है। आप इसे सेट नहीं कर सकते! – prakash

+0

मेरा बुरा, मैं स्मृति से जा रहा था और मेरे सामने दस्तावेज़ नहीं थे; अब बदल रहा है – Kevlar

3

वहाँ जवाब ऊपर में स्मृति रिसाव है। इससे बचने के लिए आपको "autorelease" का उपयोग करना चाहिए। मैंने जवाब संपादित करने की कोशिश की है लेकिन मैं अब तक सफल नहीं था।

// Info button 
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease]; 

यह करने के लिए यह सही तरीका है।

+2

सही कार्रवाई उत्तर को संपादित करने के लिए नहीं बल्कि आपके स्वयं के उत्तर * समाधान के अपने संस्करण के साथ पोस्ट करने के लिए * या, जब आप 50 प्रतिष्ठा प्राप्त कर लेते हैं, तो उत्तर पर टिप्पणी करने के लिए पोस्टर इसे सही कर सकता है। उत्तर के रूप में पोस्ट किए गए समाधान के साथ टिप्पणियां हटा दी जाने की संभावना है। अंत में, उत्तर "कोई उत्तर नहीं है" क्योंकि उत्तर की स्थिति पेज, वोट देखने के लिए उपयोग किए गए सॉर्ट टैब पर निर्भर करती है और क्या कोई जवाब स्वीकार या हटा दिया जाता है। पोस्टर के नाम से पृष्ठ पर उत्तरों या टिप्पणियों का उल्लेख करना बेहतर है। –

+0

धन्यवाद। उसे नहीं पता था! –

0

आप अपने वर्तमान बटन के लिए अपने वर्तमान बार बटन आइटम के लक्ष्य और चयनकर्ता का भी उपयोग कर सकते हैं।

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self.barButtonItem.target action:self.barButtonItem.action forControlEvents:UIControlEventTouchUpInside]; 
self.barButtonItem.customView = infoButton; 

इस तरह, आपके बार बटन आइटम के साथ जोड़े गए किसी भी क्रिया या सेग को आपके जानकारी बटन पर स्थानांतरित कर दिया जाएगा।

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