如何在addtarget函数中发送附加参数?

时间:2016-06-16 09:21:27

标签: ios swift uibutton

请有人告诉我,如何在swift 2.2中的addtarget函数中发送附加参数? 例如:

button.addTarget(self, action: #selector(classname.myFunc(_:)), forControlEvents: UIControlEvents.TouchUpInside))

func myFunc(sender:UIButton){
    print(“i am here“)
}

func myFunc(sender:UIButton,parameter:String){
    print(“i am here“)
}

5 个答案:

答案 0 :(得分:1)

您可以创建UIButton的子类,添加一个名为parameter的属性,并将其作为额外参数传递。

addTarget()中,您只能选择是否传递来电者。在这种情况下,来电者是UIButton

因此,使用子类并调用addTarget(),然后您可以获取要发送的字符串:

func myFunc(sender: customUIButton) {
    // do something with sender.parameter
}

希望它可以帮到你。

答案 1 :(得分:1)

Swift 2.2 中,您可以执行以下操作。

myUISlider.addTarget(self, action:#selector(self.onSliderValChanged(_:withEvent:)), forControlEvents: .ValueChanged)

func onSliderValChanged(slider: UISlider, withEvent event: UIEvent?) {
    }

答案 2 :(得分:1)

我使用sender属性与之一起发送一些参数

button.accessibilityHint = "param 1"
button.accessibilityValue = "param 2"
button.tag = 0

button.addTarget(self, action: #selector(buttonPressed(_:)),   forControlEvents: UIControlEvents.TouchUpInside))

func myFunc(sender:UIButton){

 print(sender.accessibilityHint) // param1
 print(sender.accessibilityValue) // param2
 print(sender.tag) // 0

}

答案 3 :(得分:0)

这是不可能的。您必须使用解决方法。

button.addTarget(self, action: #selector(classname.myFunc(_:)), forControlEvents: UIControlEvents.TouchUpInside))

func myFunc(sender:UIButton){
    self.myFunc2(sender, parameter: "My parameter")
}

func myFunc2(sender:UIButton,parameter:String){
}

答案 4 :(得分:0)

Swift 5.0代码

theButton.addTarget(self, action: #selector(theFunc), for: .touchUpInside) 
theButton.frame.name = "myParameter"

@objc func theFunc(sender:UIButton){ 
print(sender.frame.name)
}