2012-05-20 25 views
11

मेरे पास एक UINavigationController आधारित ऐप है। मैं प्रोग्राम के मेरे विचार नियंत्रक के viewDidLoad विधि के भीतर से UINavigationBar के शीर्षक सेट कर सकते हैं:UINavigationBar संपादन योग्य शीर्षक?

self.navigationItem.title = m_name; 

मैं इसे इतना है कि नेविगेशन पट्टी में शीर्षक संपादन योग्य है बना सकते हैं? अर्थात। मैं चाहता हूं कि उपयोगकर्ता नेविगेशन बार में शीर्षक टैप करने में सक्षम हो और इसे संपादित करने में सक्षम हो।

क्या यह संभव है? और यदि यह संभव है, तो क्या यह ऐप्पल के मानव इंटरफेस दिशानिर्देशों को पूरा करने की संभावना है? (इस पोस्ट में चलता है कि यह होगा, लेकिन मुझे बताया नहीं कि यह कैसे लागू करने के लिए करता है - Make UINavigationBar title editable)

बहुत धन्यवाद

नाथन

उत्तर

20

आप अपने शीर्षक के लिए एक कस्टम दृश्य सेट करने में सक्षम हैं का आनंद लें।

titleView

एक कस्टम दृश्य नेविगेशन पट्टी के केंद्र में दिखाया गया है जब रिसीवर शीर्ष मद है।

@property (nonatomic, को बनाए रखने) UIView * titleView

चर्चा

यदि यह संपत्ति के मूल्य के बराबर, नेविगेशन आइटम के शीर्षक नेविगेशन पट्टी के केंद्र में दिखाया गया है जब रिसीवर है है शीर्ष आइटम। यदि आप इस प्रॉपर्टी को कस्टम शीर्षक पर सेट करते हैं, तो यह शीर्षक के बजाय प्रदर्शित होता है। अगर बाएंबर्टनइटम शून्य नहीं है तो इस संपत्ति को अनदेखा किया जाता है।

कस्टम विचारों में बटन हो सकते हैं। बटन WithType का उपयोग करें: UIButton कक्षा में नेविगेशन बार की शैली में अपने कस्टम दृश्य में बटन जोड़ने के लिए विधि। कस्टम शीर्षक दृश्य नेविगेशन बार पर केंद्रित हैं और फिट करने के लिए आकार बदल सकते हैं।

यदि आप अपने शीर्षक में यूआईटीएक्स्टफिल्ड रखना चाहते हैं तो आप इसे स्पष्ट रंग पृष्ठभूमि दे सकते हैं और इसे कोई सीमा नहीं लगा सकते हैं। वाला आपके पास एक यूनाविगेशनबार शीर्षक है जिसे आप टैप और संपादित कर सकते हैं।

+0

धन्यवाद के लिए समाधान। उत्तर के लिए +1, और 'voila' की कॉमेडी वर्तनी :)। चीयर्स –

+0

एलओएल खुश है कि मैं एक ही समय में व्याकरण अपराधों की सहायता और प्रतिबद्धता कर सकता हूं। :) हैप्पी कोडिंग। –

+0

क्या कोई जानता है कि इसे लचीली चौड़ाई के साथ कैसे किया जाए? अगर मैं अपने डिवाइस को घुमाता हूं तो मैं चाहता हूं कि टेक्स्टफील्ड अपनी चौड़ाई को उसी तरह बदल दे, जिस तरह शीर्षक लेबल करता है। –

0

आप सही टॉप नेविगेशन पट्टी पर एक पाठ क्षेत्र रख सकते हैं, और इसे सेट छुपा/सक्षम नहीं है।, नेविगेशन बार पर एक टैप का पता लगाने के लिए एक इशारा पहचानकर्ता का उपयोग करें और टेक्स्ट फ़ील्ड को सक्षम/छिपाने के लिए सेट करें। फिर टेक्स्टफील्ड के अंत संपादन विधि में, इसे फिर से छिपाने के लिए सेट करें और नेविगेशन बार का शीर्षक टेक्स्टफील्ड में सेट करें।

0

नेविगेशन बार पर एक छिपा टेक्स्टफील्ड जोड़ें, इसलिए टैप करने पर, यह एक कीबोर्ड पॉपअप करेगा और उपयोगकर्ता उसमें टेक्स्ट दर्ज कर सकता है।

रिटर्न बटन ईवेंट प्राप्त करें, वहां आप नए नेविगेशन बार टेक्स्ट को नए जोड़े गए टेक्स्ट के साथ बदल सकते हैं। और फिर से टेक्स्टफील्ड छुपाएं।

कोडिंग :)

0

नेविगेशनबार पर एक टेक्स्ट फ़ील्ड डालें और टेक्स्ट फ़ील्ड पृष्ठभूमि रंग को अस्पष्टता के साथ शून्य पर सेट करें।

11

रयान का समाधान बिल्कुल सही है। अगर किसी को इसे लागू करने में परेशानी हो रही है, तो यहां कुछ नमूना कोड है जो आपको जाना चाहिए। नेविगेशन नियंत्रक के साथ किसी भी वर्ग पर इसे ViewDidLoad में पेस्ट करें।

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)]; 
textField.text = @"Insert Title Here"; 
textField.font = [UIFont boldSystemFontOfSize:19]; 
textField.textColor = [UIColor whiteColor]; 
textField.textAlignment = NSTextAlignmentCenter; 
self.navigationItem.titleView = textField; 

और अगर अपनी परियोजना एआरसी का उपयोग नहीं करता है, तो जैसे textfield जारी करने के लिए सुनिश्चित करें:

UITextField *textField = [[[UITextField alloc]initWithFrame:CGRectMake(0, 0, 200, 22)]autorelease]; 

या तो की तरह:

[textField release]; 

आशा है कि मदद करता है।

+0

आप इसे गतिशील रूप से कैसे आकार देंगे? – Zorayr

2

रयान के अपने जवाब रयान के लिए तेजी से

let textField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 22)) 
textField.text = "Title" 
textField.font = UIFont.systemFontOfSize(19) 
textField.textColor = UIColor.whiteColor() 
textField.textAlignment = .Center 
self.navigationItem.titleView = textField 
संबंधित मुद्दे