UIAlertAction 可以触发函数吗?
Posted
技术标签:
【中文标题】UIAlertAction 可以触发函数吗?【英文标题】:Can a UIAlertAction trigger a function? 【发布时间】:2015-07-24 03:12:32 【问题描述】:是否可以将函数连接到UIAlertAction
?
那么当用户点击OK按钮后它会执行一个动作?这不就是handler参数的作用吗?
let alert: UIAlertController = UIAlertController(title: "Email already registered", message: "Please enter a different email", preferredStyle: .alert)
let okButton = UIAlertAction(title: "OK", style: .default, handler: backToLogin())
alert.addAction(okButton)
self.presentViewController(alert, animated: true, completion: nil)
...
func backToLogin()
self.performSegueWithIdentifier("toLoginPage", sender: self)
【问题讨论】:
看看你的代码格式。太可怕了 【参考方案1】:您可以将函数用作handler
,但它需要具有正确的类型。此外,当您将它作为参数传递时,您不得调用它,即,而不是 handler: backToLogin()
(它将设置 backToLogin
的 返回值 作为处理程序)您将拥有 handler: backToLogin
而没有()
。
以下应该有效:
func backToLogin(alertAction: UIAlertAction)
self.performSegueWithIdentifier("toLoginPage", sender: self)
let okButton = UIAlertAction(title: "OK", style: .Default, handler: backToLogin)
但必须更改 backToLogin
可能会破坏目的,因此您可以只使用闭包:
let okButton = UIAlertAction(title: "OK", style: .Default) _ in
self.backToLogin()
【讨论】:
工作完美,谢谢!我现在正在研究更多的关闭...再次感谢!【参考方案2】:You need to enter the handler
let okButton = UIAlertAction(title: "OK", style: .Default, handler:
(UIAlertAction) in
self.backToLogin()
)
有关更多信息,请参阅此答案:Writing handler for UIAlertAction
【讨论】:
以上是关于UIAlertAction 可以触发函数吗?的主要内容,如果未能解决你的问题,请参考以下文章