2015-01-05 11 views
5

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

बस उदाहरण के लिए, मास्टर विवरण एप्लिकेशन टेम्पलेट में, नेविगेशन बार के दाईं ओर "एडबटन" है, मैं इसे विस्तार दृश्य कंट्रोलर पर भी प्रदर्शित करना चाहता हूं (यह काम नहीं करेगा क्योंकि कार्रवाई गायब है)।

मैंने UINavigationController का उप-वर्ग बनाया है, जिसमें मैं नेविगेशन बार रंग की तरह कुछ बदल सकता हूं, लेकिन मैं बार बटन आइटम सेट नहीं कर सकता। मैं प्रत्येक स्क्रीन के व्यू कंट्रोलर में बार बटन आइटम सेट कर सकता हूं ताकि मुझे प्रत्येक स्क्रीन के लिए कार्रवाई डुप्लिकेट करनी पड़े।

इसके अलावा मैंने UINavigationBar का उप-वर्ग बनाने की कोशिश की है, लेकिन मुझे नहीं पता कि मैं बार बटन आइटम जोड़ सकता हूं या नहीं।

नेविगेशन बार पर आम बार बटन आइटम कैसे सेट करें?

अग्रिम धन्यवाद।

+0

तुम क्यों उपवर्ग नहीं कर सकते UIViewController अपने पूर्व निर्धारित barbuttonitems के लिए और उसके बाद हर जगह उपवर्ग उपयोग करने के लिए एक और आसान तरीका ? – rakeshbs

+0

आपकी टिप्पणी के लिए धन्यवाद। क्योंकि केवल UIViewControllers नहीं हैं बल्कि UITableViewControllers भी हैं। तो क्या मुझे UIViewController और UITableViewController दोनों के उप-वर्ग बनाना चाहिए? मुझे नहीं पता कि यह आम बार बटन आइटम के लिए एक अच्छा अभ्यास है या नहीं। – 5t111111

+0

यह आसान समाधान प्रतीत होता है। आपको बस दो कस्टम कक्षाएं बनाना है? – rakeshbs

उत्तर

4

आप इसे देखने के लिए श्रेणी का उपयोग कर सकते हैं। मान लीजिए कि UIViewController+NavigationBar श्रेणी

1. बनाएँ एक वर्ग

करते 2.Add एक विधि, .h फ़ाइल में -(void)setNavigationBarItem विधि (इस मामले में)।

3. सेट बार बटन आइटम सामान से निपटने के लिए .m फ़ाइल में विधि को कार्यान्वित करें।

- (void)setNavigationBarItem 
{ 
    UIBarButtonItem *searchItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(something)]; 
    self.navigationItem.rightBarButtonItem = searchItem; 
} 

4.In ViewController आप चाहते हैं जो NavigationBarItem, श्रेणी हैडर आयात और [self setNavigationBarItem] विधि कॉल।

+0

तो, वोट क्यों नीचे? –

+0

हम्म मुझे नहीं पता कि क्यों वोट नीचे, या तो। यह उपरोक्त टिप्पणी में उल्लिखित श्रेणी का उपयोग करके एक उदाहरण कार्यान्वयन प्रतीत होता है। मैंने अभी तक इस कोड को आजमाया नहीं है। – 5t111111

+0

धन्यवाद, मैंने कोशिश की है और यह पुष्टि की है कि यह काम करता है। – 5t111111

4

के बजाय कर एक विस्तार

बनाने रूट दृश्य नियंत्रक में UINavigationControllerDelegate लागू

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { 
    let backBarButton = UIBarButtonItem.init(title: "HINIBO", style: .Plain, target: self, action: Selector("menuButtonAction:")) 
    viewController.navigationItem.rightBarButtonItem = backBarButton 
} 
संबंधित मुद्दे