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.