UISegmentedControl cambiar el número de segmentos de programación

Tengo una UISegmentedControl en una vista llamada SegmentedAnswer, con cuatro segmentos.
Hay una manera de cambiar el número de segmentos de programación?
Muchas gracias!

InformationsquelleAutor Beppino66 | 2012-07-24

6 Kommentare

  1. 120

    Sí, usted puede utilizar

    removeSegmentAtIndex:(NSUInteger) animated:(BOOL)

    Y

    insertSegmentWithTitle:(NSString *) atIndex:(NSUInteger) animated:(BOOL)
    • He resuelto con: [auto.SegmentAnswer insertSegmentWithTitle:@»5″ atIndex:4 animados:YES]; [self.SegmentAnswer insertSegmentWithTitle:@»6″ atIndex:5
  2. 42

    Para reemplazar los segmentos completamente, usted puede utilizar la siguiente función:

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

    Espero que esto ayude.

    • Esto fue perfecto para poner en un UISegmentedControl categoría. Gracias!
    • Puede utilizar [segmentController removeAllSegments] en lugar de que el bucle while. Consulte la documentación en developer.apple.com/library/ios/documentation/UIKit/Reference/…
    • El doble check, que está disponible tanto para los 7.X y 8.X yeh?
    • Editado el uso de [segmentController removeAllSegments] como por @MCR comentario.
  3. 20

    Y aquí es un poco más rápida de extensión para sustituir los actuales segmentedControl con variedad de nuevos valores

    Swift 3

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

    Swift 4

    extension UISegmentedControl {
        func replaceSegments(segments: Array<String>) {
            self.removeAllSegments()
            for segment in segments {
                self.insertSegment(withTitle: segment, at: self.numberOfSegments, animated: false)
            }
        }
    }
  4. 3

    Aquí es una forma rápida de extensión para la sustitución de los segmentos con una secuencia de cadenas. Es similar a otra respuesta dado aquí, excepto que puede ser utilizado con cualquier secuencia, lo que significa que también puede pasar en rodajas, conjuntos, etc.

    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)
            }
        }
    }
    • Se puede añadir un enlace a la otra respuesta que usted se refiere? Usted puede obtener un enlace a una respuesta haciendo clic en el enlace «compartir» debajo de ella.
  5. 2

    Aras de la exhaustividad (y porque acabé aquí buscando la manera de lograr lo mismo en xib) aquí está cómo hacerlo en xib:

    UISegmentedControl cambiar el número de segmentos de programación

    • Para los vagos, esta es la forma de hacerlo…
  6. 0

    trabajo para mí, UIsegmentedControll contiene dos segmentos, quiero agregar uno en el índice 2, usa este código en swift 2.2 uso:

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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea