web-dev-qa-db-fra.com

UISegmentedControl désélectionner (ne faire aucun des segments sélectionnés)

en fait, le titre contient ma question . J'ai un UISegmentedControl, et je dois désélectionner l'onglet actuellement sélectionné . J'ai essayé: 

[menu setSelectedSegmentIndex:-1];

menu étant le UBOutlet pour uisegmentedcontrol mais cela me donne une exception . quelqu'un a une idée? merci peter

41
dusker

Je suppose que vous avez appelé [myArray length] au lieu du [myArray count] approprié quelque part dans votre code. NSArray utilise la méthode de comptage et non la longueur du nombre d'éléments qu'il contient.

0
David Kanarek

La bonne façon de faire est:

[menu setSelectedSegmentIndex:UISegmentedControlNoSegment];
224
Calin Drule

Je suppose que vous essayez de créer une sélection momentanée dans le contrôle segmenté . Dans le générateur d'interface, définissez le contrôle segmenté sur momentané .

menu.momentary = YES;
31
dombesz

Définir segmentedControl sur .momentary = YES modifie la façon dont l'utilisateur peut interagir avec segmentedControl. Si vous souhaitez que rien ne soit sélectionné initialement lors du chargement de la page mais que segmentedControl se comporte de la même manière après la sélection de l'utilisateur, vous souhaiterez un résultat plus semblable à celui-ci:

Solution Swift 4 :

 @IBOutlet weak var segmentedControl: UISegmentedControl!

 self.segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment
25
Daniel Leonard

Vous pouvez maintenant le faire dans xcode 6 dans le générateur d'interface:

Deselect the 'Selected' option under segmented control behaviour in attributes inspector.

3
Zaxter

La solution Swift: @IBOutlet weak var mySegmentedControl: UISegmentedControl! et mySegmentedControl.selectedSegmentIndex = -1.

2
Tom Daniel

Swift 4 

@IBOutlet weak var segmentControl: UISegmentedControl! {
    didSet {
        segmentControl.selectedSegmentIndex = UISegmentedControl.noSegment
    }
}