UIAlertAction可以触发一个功能吗?

时间:2015-07-24 03:12:32

标签: swift uialertaction

是否可以将功能连接到UIAlertAction

因此,在用户点击确定按钮后,它会执行操作吗?这不是处理程序参数的作用吗?

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)
}

2 个答案:

答案 0 :(得分:3)

您可以将函数用作handler,但它需要具有正确的类型。当你把它作为一个参数传递时,你也不能调用它,即,而不是handler: backToLogin()(将{{1>}的返回值设置为处理程序)你将拥有它没有backToLogin的{​​{1}}。

以下内容应该有效:

handler: backToLogin

但是必须改变()可能会破坏目的,所以你可以使用一个闭包:

func backToLogin(alertAction: UIAlertAction) {
    self.performSegueWithIdentifier("toLoginPage", sender: self)
}
let okButton = UIAlertAction(title: "OK", style: .Default, handler: backToLogin)

答案 1 :(得分:0)

You need to enter the handler

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

(UIAlertAction) in

self.backToLogin()

})

}

有关详细信息,请参阅此答案:Writing handler for UIAlertAction