如何在addtarget函数中发送附加参数?
请大家告诉我,在swift 2.2中如何发送addtarget函数中的附加参数? 例子:如何在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“)
}
这是不可能的。您必须使用解决方法。
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){
}
这不会解决问题,除非参数是一个全局varibale。如果是这种情况,那么我们并不需要传递参数本身。选择器只能提供呼叫者作为发件人。而已。 – kandelvijaya
谢谢你的回答。 –
@kandelvijaya你指的是什么问题? OP没有提到任何。无论如何,有可能OP想要在点击button1时用字符串X调用myFunc2,在点击button2时用myWunc2调用字符串Y.所以这种设计没有任何问题。 – Code
您可以创建UIButton
一个子类,添加一个属性命名要通过作为一个额外的参数parameter
。
在addTarget()
中,您只能选择是否传递呼叫者。在这种情况下,来电者是UIButton
。
因此,使用该子类,并调用addTarget()
,那么你可以得到你想要发送字符串:
func myFunc(sender: customUIButton) {
// do something with sender.parameter
}
希望它可以帮助你。
在Swift 2.2你可以做这样的事情。
myUISlider.addTarget(self, action:#selector(self.onSliderValChanged(_:withEvent:)), forControlEvents: .ValueChanged)
func onSliderValChanged(slider: UISlider, withEvent event: UIEvent?) {
}
的[附加参数,以迅捷button.addTarget动作]可能的复制(http://stackoverflow.com/questions/24814646/attach-parameter-to-button-addtarget-action-in-swift) – KTPATEL