UIAlertAction 可以触发函数吗?

Can a UIAlertAction trigger a function?

是否可以将函数连接到 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)
}
You need to enter the handler

let okButton = UIAlertAction(title: "OK", style: .Default, handler: {

(UIAlertAction) in

self.backToLogin()

})

}

查看此答案了解更多信息:Writing handler for UIAlertAction

您可以将函数用作 handler,但它需要具有正确的类型。此外,当你将它作为参数传递时,你不能调用它,即,而不是 handler: backToLogin() (这将设置 return 值 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()
}