Comment puis-je basculer UISegmentedControll
par programme?
La propriété selectedSegmentIndex identifie le segment sélectionné d'un UISegmentedControl. Définissez cette propriété sur n'importe quel index de segment valide ou ISegmentedControlNoSegment (-1) pour désactiver la sélection actuelle.
// 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];
Réponse @jmstone, true, cette action n'invoquera pas l'événement valueChanged pour ce contrôle.
Une façon de résoudre ce problème consiste à appeler la fonction vous-même:
segmentedControl.selectedSegmentIndex = 3;
[self valueChangedMethod:segmentedControl];
Cela appellera:
- (void)valueChangedMethod:(UISegmentedControl *)segmentedControl
{
//continue your code here...
}
Dans 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 que "viewDidLoad" ait été appelé, tout allait bien à nouveau.