2012-07-24 14 views
48

मेरे पास सेगमेंटेडएन्सर नामक दृश्य में चार खंडों के साथ एक UISegmentedControl है। प्रोग्रामिंग सेगमेंट की संख्या बदलने का कोई तरीका है? बहुत बहुत धन्यवाद!प्रोग्राम किए गए सेगमेंट के UISegmentedControl परिवर्तन संख्या

- (void)setSegments:(NSArray *)segments 
{ 
    [segmentController removeAllSegments]; 

    for (NSString *segment in segments) { 
     [segmentController insertSegmentWithTitle:segment atIndex:segmentController.numberOfSegments animated:NO]; 
    } 
} 

आशा इस मदद करता है:

उत्तर

101

हाँ, आप उपयोग कर सकते हैं

removeSegmentAtIndex:(NSUInteger) animated:(BOOL) 

और

insertSegmentWithTitle:(NSString *) atIndex:(NSUInteger) animated:(BOOL) 
+0

मैं के साथ हल: [self.SegmentAnswer insertSegmentWithTitle: @ "5" atIndex: 4 एनिमेटेड: हाँ]; [self.SegmentAnswer insertSegmentWithTitle: @ "6" इंडेक्स: 5 – Beppino66

41

पूरी तरह खंडों बदलने के लिए, आप निम्नलिखित फ़ंक्शन का उपयोग कर सकते हैं। यहाँ

enter image description here

+2

यह UISegmentedControl श्रेणी में डालने के लिए सही था। धन्यवाद! – DonnaLea

+1

आप लूप के बजाय [सेगमेंट कंट्रोलर हटाएं सभी सेटिंग्स] का उपयोग कर सकते हैं। Https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISegmentedControl_Class/#//apple_ref/occ/instm/UISegmentedControl/removeAllSegments – MCR

+0

पर दस्तावेज़ों को दोबारा जांचने के लिए, यह दोनों 7.X के लिए उपलब्ध है और 8.X ये? – Zorayr

-1

पूर्णता के लिए के लिए (और क्योंकि मैं समाप्त हो गया यहाँ कैसे xib में एक ही बात को प्राप्त करने के लिए देख रहे हैं) यहाँ कैसे xib में यह करने के लिए है विस्तार नए मूल्यों

extension UISegmentedControl { 
    func replaceSegments(segments: Array<String>) { 
     self.removeAllSegments() 
     for segment in segments { 
      self.insertSegmentWithTitle(segment, atIndex: self.numberOfSegments, animated: false) 
     } 
    } 
} 
0

मेरे लिए काम की सरणी के साथ वर्तमान segmentedControl को बदलने के लिए, UIsegmentedControll दो खंडों में शामिल है, मैं चाहता हूँ तेजी से 2.2 उपयोग में इस कोड सूचकांक 2 में एक जोड़ने के लिए, का उपयोग करें:

SEG_TipoFiltro.insertSegmentWithTitle("Title", atIndex: 2, animated: false) 
2

स्ट्रिंग्स के अनुक्रम के साथ सेगमेंट को बदलने के लिए यहां एक स्विफ्ट एक्सटेंशन है। यह another answer यहाँ दी के लिए इसी तरह की स्थिति को छोड़कर यह, किसी भी क्रम के साथ प्रयोग किया जा सकता है, जिसका अर्थ है आप भी स्लाइस, सेटों में पारित कर सकते हैं आदि

extension UISegmentedControl { 

    /// Replace the current segments with new ones using a given sequence of string. 
    /// - parameter withTitles:  The titles for the new segments. 
    public func replaceSegments<T: Sequence>(withTitles: T) where T.Iterator.Element == String { 
     removeAllSegments() 
     for title in withTitles { 
      insertSegment(withTitle: title, at: numberOfSegments, animated: false) 
     } 
    } 
} 
+0

क्या आप दूसरे उत्तर का लिंक जोड़ सकते हैं जिसका आप उल्लेख कर रहे हैं? आप इसके तहत "शेयर" लिंक पर क्लिक करके एक उत्तर पर एक परमालिंक प्राप्त कर सकते हैं। –

+0

वहां। इसे अभी जोड़ा गया पारितोषिक के लिए धन्यवाद। –