2016-06-16 35 views
3

请大家告诉我,在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“) 
} 
+0

的[附加参数,以迅捷button.addTarget动作]可能的复制(http://stackoverflow.com/questions/24814646/attach-parameter-to-button-addtarget-action-in-swift) – KTPATEL

回答

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){ 
} 
+0

这不会解决问题,除非参数是一个全局varibale。如果是这种情况,那么我们并不需要传递参数本身。选择器只能提供呼叫者作为发件人。而已。 – kandelvijaya

+0

谢谢你的回答。 –

+0

@kandelvijaya你指的是什么问题? OP没有提到任何。无论如何,有可能OP想要在点击button1时用字符串X调用myFunc2,在点击button2时用myWunc2调用字符串Y.所以这种设计没有任何问题。 – Code

1

您可以创建UIButton一个子类,添加一个属性命名要通过作为一个额外的参数parameter

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

因此,使用该子类,并调用addTarget(),那么你可以得到你想要发送字符串:

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

希望它可以帮助你。

1

Swift 2.2你可以做这样的事情。

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

func onSliderValChanged(slider: UISlider, withEvent event: UIEvent?) { 
    } 
相关问题