Swift处理分段控制的动作

时间:2015-05-30 10:49:43

标签: swift uisegmentedcontrol

我有一个包含4个段的HMSegmentedControl。选中后,应该会弹出视图。当弹出窗口被解雇,并试图点击相同的段索引时,它应该再次显示弹出窗口。弹出消失后,使用以下内容对点击同一段索引没有任何操作。

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

7 个答案:

答案 0 :(得分:32)

您可以为多个事件添加相同的目标。

所以我们说segmentedControlValueChanged:看起来像这样:

func segmentedControlValueChanged(segment: UISegmentedControl) {
    if segment.selectedSegmentIndex == 0 {
    }
    ...
}

然后,您可以为多个事件添加目标以调用此函数:

segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.ValueChanged)
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)

现在,当值发生变化以及用户松开手指时,您的函数将被调用。

答案 1 :(得分:16)

与发件人一起使用发件人名称发件人,如果您想要在操作中访问:

segmentControl.addTarget(self, action: #selector(changeWebView(sender:)), for: .valueChanged)

addTarget(self, action: #selector(changeWebView), for: .valueChanged)

答案 2 :(得分:10)

您将目标设置为在值更改时触发,因此如果您选择相同的段,该值将不会更改并且不显示弹出窗口,请尝试将事件更改为TouchUpInside,因此每次您都会触发该事件触摸段内

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside) 

答案 3 :(得分:3)

@IBAction func segmentedControlButtonClickAction(_ sender: UISegmentedControl) {
   if sender.selectedSegmentIndex == 0 {
      print("First Segment Select")
   }
   else { 
      print("Second Segment Select")
   }
}

答案 4 :(得分:2)

Swift4语法:

segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", for:.touchUpInside)

答案 5 :(得分:1)

迅速4.2

//添加viewController

RewriteEngine On 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [L]

//使用更改

@IBOutlet var segmentedControl: UISegmentedControl!

override func viewDidLoad() {
    super.viewDidLoad()
    segmentedControl.addTarget(self, action: #selector(CommentsViewController.indexChanged(_:)), for: .valueChanged)
}

答案 6 :(得分:0)

通过拖放操作创建一个值类型的动作。

enter image description here

@IBAction func actionSegment(_ sender: Any) {
    let segemnt = sender as! UISegmentedControl
    print(segemnt.selectedSegmentIndex)// 0 , 1

}