2017-01-08 44 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,是的。作为事件流的一部分,它们都链接在一起。抱歉耽搁了。 –