15

के साथ नेविगेशन बार में UISegmentedControl मैं नेविगेशन बार में UISegmentedControl जोड़ रहा हूं, जहां titleView होना चाहिए। लेकिन Apple docs के तहत titleView, के तहत उल्लेख किया गया है यदि यह संपत्ति अनदेखा की जाती है तो बाएंबर्टनइटम शून्य नहीं है।बैक बटन

लेकिन मैं बैक बटन भी चाहता हूं। जैसे उन्होंने अपनी छवियों में चित्रित किया है!

enter image description here

नीचे कोड मैं UISegmentedControl जोड़ने है।

self.navigationItem.leftBarButtonItem = nil; 
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]; 
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar]; 
self.navigationItem.titleView = statFilter; 

वहाँ एक और तरीका है एक UISegmentedControl वापस बटन के साथ भी जोड़ना है?

धन्यवाद।

उत्तर

3

आप कस्टम दृश्य के साथ UIBarButtonItem बना सकते हैं जो संभावित रूप से आपके UISegmentedControl हो सकता है।

निम्नलिखित की पंक्तियों के साथ कुछ काम कर सकता है।

//create segmented control with items 
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", nil]]; 

//create bar button item with segmented control as custom view 
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; 

//add segmented control bar button item to navigation bar 
[[[self navigationController] navigationItem] setRightBarButtonItem:barButtonItem]; 

मैंने इसका परीक्षण नहीं किया है, लेकिन यह आपको आवश्यकतानुसार सही लाइनों के साथ होना चाहिए।

[statFilter sizeToFit]; 

आशा इस:

+0

प्रतिक्रिया के लिए हाय धन्यवाद। इस बीच में मैं इंतजार कर रहा था, मैंने इसका परीक्षण करने के लिए एक छोटे से कार्यक्रम को एक साथ थप्पड़ मार दिया। मैंने 2 व्यू कंट्रोलर डाले, पहले एक बटन को दूसरे को सीग करने के लिए। और दूसरे व्यू कंट्रोलर के व्यूडिडलोड विधि में, मैंने अपने प्रश्न में पोस्ट किए गए कोड और [voila] (http://i.imgur.com/DlZuAwk.png) का उपयोग करके UISegmentedControl बनाया है! यह काम करता हैं! मुझे नहीं पता कि ऐप्पल ने क्यों कहा है कि यह काम नहीं करेगा। : एस – Isuru

23

इस

प्रयास करें निकालें इस लाइन --->self.navigationItem.leftBarButtonItem = nil;

इस बजाय

UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]]; 
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar]; 
[statFilter sizeToFit]; 
self.navigationItem.titleView = statFilter; 

केवल परिवर्तन जोड़े मैं इस लाइन को शामिल किया है है मदद करता है !!!

+0

यह वास्तव में मेरी मदद करता है, धन्यवाद ...: :) – tausun

+9

'setegmentedControlStyle' को आईओएस 7 के रूप में बहिष्कृत किया गया है ... क्या आप अपना उत्तर अपडेट कर सकते हैं? –

+0

ऐसा लगता है कि यह एक आईबीओलेट के माध्यम से सेगमेंट कंट्रोल एड के साथ काम नहीं करता है। एक सेगमेंट कंट्रोल वर्क प्रोग्रामेटिक रूप से पूरी तरह से काम करता है। – Cymric

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