Comment basculer UIsegmentedControll par programmation?

Comment changer UISegmentedControll programmation?

La propriété selectedSegmentIndex identifie le segment sélectionné d’un UISegmentedControl. Définissez cette propriété sur l’index de segment valide ou UISegmentedControlNoSegment (-1) pour désactiver la sélection en cours.

 // select the first segment segmented.selectedSegmentIndex = 0; // turn off the current selection segmented.selectedSegmentIndex = UISegmentedControlNoSegment; 

Alternativement, après avoir modifié l’appel selectedSegmentIndex ‘sendActionsForControlEvents:’ par exemple

 segmentedControl.selectedSegmentIndex = 0 [segmentedControl sendActionsForControlEvents:UIControlEventValueChanged]; 

@jmstone response, true, cette action n’invoquera pas l’événement valueChanged pour ce contrôle.

Une façon de surmonter cela consiste à appeler la fonction vous-même:

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

Cela appellera:

 - (void)valueChangedMethod:(UISegmentedControl *)segmentedControl { //continue your code here... } 

En Swift:

 segmentedControl.selectedSegmentIndex = 1 

Swift 2:

 segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged) 

Swift 3:

 segmentedControl.sendActions(for: UIControlEvents.valueChanged) 

J’ai eu un problème similaire où le contrôle segmenté ne changeait pas. J’appelais “selectedSegmentIndex”, etc. trop tôt. Une fois que je l’ai appelé après avoir appelé “viewDidLoad”, alors tout allait bien.