Быстрое управление ручкой на сегментированном управлении
У меня есть HMSegmentedControl с 4 сегментами. Когда он выбран, он должен всплывать. И когда всплывающее окно отклоняется и пытается щелкнуть по тому же индексу сегмента, он должен снова показать всплывающее окно. При использовании следующих действий не происходит никаких действий при нажатии на один и тот же индекс сегмента после всплытия.
segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents: UIControlEvents.ValueChanged)
Ответы
Ответ 1
Вы устанавливаете цель для стрельбы, только когда значение изменяется, поэтому, если вы выберете один и тот же сегмент, значение не изменится, и popover не будет отображаться, попробуйте изменить событие на TouchUpInside, поэтому он будет запущен каждый раз, когда вы касание внутри сегмента
segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)
Ответ 2
Вы можете добавить одну и ту же цель для нескольких событий.
Итак, скажем, ваш segmentedControlValueChanged:
выглядит так:
func segmentedControlValueChanged(segment: UISegmentedControl) {
if segment.selectedSegmentIndex == 0 {
}
...
}
Затем вы можете добавить цели для более чем 1 события, чтобы вызвать эту функцию:
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.ValueChanged)
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)
Теперь ваша функция будет вызвана, когда значение будет изменено и когда пользователь отпустит палец.
Ответ 3
с отправителем используйте отправителя имени отправителя, когда вы хотите получить доступ в действии:
segmentControl.addTarget(self, action: #selector(changeWebView(sender:)), for: .valueChanged)
или же
addTarget(self, action: #selector(changeWebView), for: .valueChanged)
Ответ 4
@IBAction func segmentedControlButtonClickAction(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
print("First Segment Select")
}
else {
print("Second Segment Select")
}
}
Ответ 5
Синтаксис Swift4:
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", for:.touchUpInside)
Ответ 6
Swift 5
//добавить viewController
@IBOutlet var segmentedControl: UISegmentedControl!
override func viewDidLoad() {
super.viewDidLoad()
segmentedControl.addTarget(self, action: #selector(CommentsViewController.indexChanged(_:)), for: .valueChanged)
}
//используя изменения
@objc func indexChanged(_ sender: UISegmentedControl) {
if segmentedControl.selectedSegmentIndex == 0 {
print("Select 0")
} else if segmentedControl.selectedSegmentIndex == 1 {
print("Select 1")
} else if segmentedControl.selectedSegmentIndex == 2 {
print("Select 2")
}
}