¿Cómo puedo cambiar UIsegmentedControll mediante programación?

¿Cómo puedo cambiar UISegmentedControll mediante programación ?

InformationsquelleAutor Voloda2 | 2011-03-11

5 Kommentare

  1. 85

    La selectedSegmentIndex propiedad identifica el segmento seleccionado de un UISegmentedControl. Establezca esta propiedad a cualquier segmento válido índice, o UISegmentedControlNoSegment (-1) para desactivar la selección actual.

    //select the first segment
    segmented.selectedSegmentIndex = 0;
    
    //turn off the current selection
    segmented.selectedSegmentIndex = UISegmentedControlNoSegment;
    • Esto en realidad no desencadenar lo objetivo/acción ha configurado para que cuando el usuario selecciona un segmento diferente, sin embargo.
  2. 82

    Alternativamente, después de haber cambiado el selectedSegmentIndex llamada ‘sendActionsForControlEvents:’ por ejemplo

    segmentedControl.selectedSegmentIndex = 0
    
    [segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
    • Trabajo como un encanto!Gracias
    • Sin sendActionsForControlEvents, sólo cambia el segmento, pero no evento de disparo. En Swift es segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged) muchas Gracias.
    • Respuesta más apropiada. En realidad esto debería ser marcado.
    • Trabajo Bueno, pero el índice antiguo de color no cambia
  3. 24

    @jmstone respuesta,
    cierto, esta acción no se invoque el evento valueChanged para este control.

    Una manera de superar esto es simplemente llamar a la función de ti mismo:

    segmentedControl.selectedSegmentIndex = 3;
    [self valueChangedMethod:segmentedControl];

    Esto le llamamos:

    - (void)valueChangedMethod:(UISegmentedControl *)segmentedControl
    {
        //continue your code here...
    }
    • Esta resuelto mi problema, gracias!
  4. 22

    En Swift:

    segmentedControl.selectedSegmentIndex = 1

    Swift 2:

    segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)

    Swift 3:

    segmentedControl.sendActions(for: UIControlEvents.valueChanged)
    • El Swift 3 variación puede ser simplificado a segmentedControl.sendActions(for: .valueChanged).
  5. 2

    He tenido un problema similar, donde la segmentación de control no estaba cambiando.
    Me estaba llamando «selectedSegmentIndex», etc demasiado temprano. Una vez me llamó después «viewDidLoad» se llamaba entonces todo estaba bien de nuevo.

Kommentieren Sie den Artikel

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

Pruebas en línea