web-dev-qa-db-fra.com

Comment puis-je basculer UIsegmentedControl par programmation?

Comment puis-je basculer UISegmentedControll par programme?

59
Voloda2

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;
84
Lachlan Roche

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

segmentedControl.selectedSegmentIndex = 0

[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
85
arcady bob

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...
}
24
Lirik

Dans Swift:

segmentedControl.selectedSegmentIndex = 1

Swift 2:

segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)

Swift 3:

segmentedControl.sendActions(for: UIControlEvents.valueChanged)
23
Matias Elorriaga

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.

2
Daniel Ryan