Подтвердить что ты не робот

Быстрое управление ручкой на сегментированном управлении

У меня есть HMSegmentedControl с 4 сегментами. Когда он выбран, он должен всплывать. И когда всплывающее окно отклоняется и пытается щелкнуть по тому же индексу сегмента, он должен снова показать всплывающее окно. При использовании следующих действий не происходит никаких действий при нажатии на один и тот же индекс сегмента после всплытия.

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents: UIControlEvents.ValueChanged) 
4b9b3361

Ответ 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")
    }
}