请有人告诉我,如何在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“)
}
答案 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)
}