J'ai un HMSegmentedControl avec 4 segments. Quand il est sélectionné, il devrait apparaître. Et lorsque la fenêtre contextuelle est rejetée, et en essayant de cliquer sur le même index de segment, elle devrait à nouveau afficher la fenêtre contextuelle. En utilisant ce qui suit n'a aucune action sur le clic du même index de segment après pop-up dissipé.
segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents: UIControlEvents.ValueChanged)
Vous définissez votre cible pour qu'elle se déclenche juste au moment où la valeur change, donc si vous sélectionnez le même segment, la valeur ne changera pas et le popover ne s'affichera pas, essayez de changer l'événement en TouchUpInside, donc il sera déclenché chaque fois que vous toucherez à l'intérieur du segment
segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)
Vous pouvez ajouter la même cible pour plusieurs événements.
Disons donc votre segmentedControlValueChanged:
ressemble à ça:
func segmentedControlValueChanged(segment: UISegmentedControl) {
if segment.selectedSegmentIndex == 0 {
}
...
}
Ensuite, vous pouvez ajouter des cibles pour plus de 1 événements pour appeler cette fonction:
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.ValueChanged)
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)
Maintenant, votre fonction sera appelée lorsqu'une valeur a été modifiée et lorsque l'utilisateur relâche son doigt.
avec l'expéditeur, utilisez le nom de l'expéditeur expéditeur lorsque vous souhaitez accéder à l'action:
segmentControl.addTarget(self, action: #selector(changeWebView(sender:)), for: .valueChanged)
ou
addTarget(self, action: #selector(changeWebView), for: .valueChanged)
@IBAction func segmentedControlButtonClickAction(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
print("First Segment Select")
}
else {
print("Second Segment Select")
}
}
Syntaxe Swift4:
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", for:.touchUpInside)
Swift 4.2
// ajouter viewController
@IBOutlet var segmentedControl: UISegmentedControl!
override func viewDidLoad() {
super.viewDidLoad()
segmentedControl.addTarget(self, action: #selector(CommentsViewController.indexChanged(_:)), for: .valueChanged)
}
// en utilisant le changement
@objc func indexChanged(_ sender: UISegmentedControl) {
if segmentControl.selectedSegmentIndex == 0 {
print("Select 0")
}
else {
}
}