2012-07-24 14 views

risposta

101

Sì, è possibile utilizzare

removeSegmentAtIndex:(NSUInteger) animated:(BOOL) 

E

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

ho risolto con: [self.SegmentAnswer insertSegmentWithTitle: @ "5" atIndex: 4 animato: SI]; [self.SegmentAnswer insertSegmentWithTitle: @ "6" atIndex: 5 – Beppino66

41

Per sostituire i segmenti del tutto, è possibile utilizzare la seguente funzione:

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

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

Spero che questo aiuti.

+2

Questo è stato perfetto per inserire una categoria UISegmentedControl. Grazie! – DonnaLea

+1

È possibile utilizzare [segmentController removeAllSegments] anziché il ciclo while. Vedere la documentazione su https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISegmentedControl_Class/#//apple_ref/occ/instm/UISegmentedControl/removeAllSegments – MCR

+0

Per ricontrollare, è disponibile per entrambi 7.X e 8.X yeh? – Zorayr

-1

Per ragioni di completezza (e perché ho finito qui in cerca di come realizzare la stessa cosa in XI ter) ecco come farlo in XI ter:

enter image description here

7

Ed ecco un po 'di Swift estensione per sostituire segmentedControl corrente con serie di nuovi valori

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

lavoro per me, UIsegmentedControll contiene due segmenti, voglio aggiungere uno in indice 2, utilizzare questo codice a swift 2.2 uso:

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

Ecco un'estensione Swift per la sostituzione dei segmenti con una sequenza di stringhe. E 'simile a another answer data qui tranne che può essere utilizzato con qualsiasi sequenza, significa che è possibile anche passare a fette, set, ecc

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

Puoi aggiungere un link all'altra risposta a cui ti stai riferendo? Puoi ottenere un permalink a una risposta facendo clic sul link "condividi" sotto di esso. –

+0

Lì. Aggiunto ora. Grazie per il consiglio. –

Problemi correlati