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

結果Expected expression in list of expressions不匹配函數頭

功能

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

嘿@Marin,是的。作爲事件流的一部分,它們都鏈接在一起。抱歉耽擱了。 –