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 可以触发函数吗?的主要内容,如果未能解决你的问题,请参考以下文章

UIAlertController

UIAlertController

iOS弹窗UIAlertAction用法

在 UIAlertAction 处理程序中更新 UI

是否可以编辑 UIAlertAction 标题字体大小和样式?

是否可以编辑UIAlertAction标题字体大小和样式?