Swift处理分段控制的动作

Poo*_*nam 28 uisegmentedcontrol ios swift

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

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents: UIControlEvents.ValueChanged) 
Run Code Online (Sandbox Code Playgroud)

Arb*_*tur 33

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

所以,让我们说你的segmentedControlValueChanged:样子:

func segmentedControlValueChanged(segment: UISegmentedControl) {
    if segment.selectedSegmentIndex == 0 {
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

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

segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.ValueChanged)
segmentedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside)
Run Code Online (Sandbox Code Playgroud)

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


Kri*_*ofe 19

使用swift3以这种方式使用它:

如果要在操作中访问,请使用发件人,使用发件人姓名发件人:

segmentControl.addTarget(self, action: #selector(changeWebView(sender:)), for: .valueChanged)
Run Code Online (Sandbox Code Playgroud)

要么

addTarget(self, action: #selector(changeWebView), for: .valueChanged)
Run Code Online (Sandbox Code Playgroud)


ikb*_*bal 17

斯威夫特 5

// 添加视图控制器

@IBOutlet var segmentedControl: UISegmentedControl!

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

// 使用更改

@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")
    }
}
Run Code Online (Sandbox Code Playgroud)


Ica*_*aro 11

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

segmetedControl.addTarget(self, action: "segmentedControlValueChanged:", forControlEvents:.TouchUpInside) 
Run Code Online (Sandbox Code Playgroud)

  • `.valueChanged`事件适用于UISegmentControl. (5认同)
  • 我已经通过使用TouchUpInside事件尝试了这个.但它没有用.使用它时不会发生任何事件. (3认同)
  • 你试过.AllEvents吗? (2认同)