2017-01-08 11 views
1
submitButton.addTarget(self, action: (self.submitButtonDown(_: , completion: )), for: .touchUpInside) 

結果は不一致機能ヘッダー

func submitButtonDown(_ sender: AnyObject?, completion: (Bool) -> Void) { 

が、私はそれを動作させるために内部の閉鎖が含まれている必要がありますか?

+0

ボタンターゲットとして任意のメソッドを使用することはできません。非常によく似た質問については、http://stackoverflow.com/questions/40425480/how-to-send-multiple-buttons-in-button-addtarget-action-swift3を参照してください。 –

+0

これはちょっと制限されていますが、どのように(関数が実行された後で)クリックして完了クロージャを付けるのですか? – Marin

答えて

0

addTargetメソッドは、セレクタ(ブロックまたは関数参照ではない)を要求しているので、使用することはできません。

ボタンタップでコールバックをトリガする最も簡単な方法は、コールバックブロックをインスタンス変数に割り当て、標準のボタンタップハンドラから呼び出すことです。

var onTapCallback: ((success: Bool) -> Void)? 

func submitButtonDown(_ sender: AnyObject?) { 
    self.onTapCallback?(true) 
} 
+0

submitButtonDownの実行が終了した後、このコールバックが呼び出されますか?私は、コールバックが呼び出されるまでイベントが終了しないことに気づいた。 – Marin

+1

ねえマリン、はい。イベントフローの一部として、すべてが連鎖しています。遅れて申し訳ありません。 –