我有一个带有4个段的HMSegmentedControl。选中后,应该会弹出视图。当弹出窗口被解雇,并试图点击相同的段索引时,它应该再次显示弹出窗口。通过使用以下对弹出消失后点击相同的段索引没有任何动作。
segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents: UIControlEvents.ValueChanged)
您将目标设置为在值更改时触发,因此如果您选择相同的段,该值将不会更改并且不显示弹出窗口,请尝试将事件更改为TouchUpInside,因此每次触摸内部时都会触发该事件分割
segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)
您可以为多个事件添加相同的目标。
所以,让我们说你的segmentedControlValueChanged:
看起来像这样:
func segmentedControlValueChanged(segment: UISegmentedControl) {
if segment.selectedSegmentIndex == 0 {
}
...
}
然后,您可以为多个事件添加目标以调用此函数:
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.ValueChanged)
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)
现在,当值发生变化以及用户松开手指时,您的函数将被调用。
如果要在操作中访问,请使用发件人,使用发件人姓名发件人:
segmentControl.addTarget(self, action: #selector(changeWebView(sender:)), for: .valueChanged)
要么
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")
}
}
Swift4语法:
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", for:.touchUpInside)
迅捷4.2
//添加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 segmentControl.selectedSegmentIndex == 0 {
print("Select 0")
}
else {
}
}