2016-06-16 15 views
3

誰でも教えてください、迅速に2.2の追加機能で追加パラメータを送信する方法は? 例:addtarget関数で追加パラメータを送信する方法は?

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

(http://stackoverflow.com/questions/24814646/attach-parameter-to-button-addtarget-action-in-swift)スイフトでbutton.addTargetアクションにパラメータを添付]の可能な重複 – KTPATEL

答えて

0

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

func myFunc(sender:UIButton){ 
    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){ 
} 
+0

パラメータがグローバル変数でない限り、これは問題を解決しません。その場合、パラメータ自体を渡す必要はありませんでした。セレクタは発信者を発信者としてのみ提供できます。これ以上何もない。 – kandelvijaya

+0

お返事ありがとうございます。 –

+0

@kandelvijayaどのような問題を言及していますか? OPは何も言及しなかった。とにかく、OPはbutton1がタップされているときに文字列XでmyFunc2を呼び出し、button2がタップされているときに文字列YでmyFunc2を呼び出す可能性があります。だから、このデザインには何も問題はありません。 – Code

1

あなたは余分なパラメータとして渡したいparameterという名前のプロパティを追加し、UIButtonのサブクラスを作成することができます。

addTarget()では、発信者を渡すかどうかのみを選択できます。この場合、発信者はUIButtonです。

それでは、あなたが送信する文字列を取得することができ、サブクラスを使用してaddTarget()を呼び出す:

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

は、それはあなたを助けることができると思います。

1

スイフト2.2このようなことができます。

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

func onSliderValChanged(slider: UISlider, withEvent event: UIEvent?) { 
    } 
関連する問題