我正在添加警报以防止用户覆盖以前使用过的数据,我正在使用UIAlertController,如同在其他帖子中推荐的那样。涉及的代码如下所示:
var alert:UIAlertController = UIAlertController(title: "Are you sure?", message: "This will overwrite your information", preferredStyle: UIAlertControllerStyle.Alert)
func showAlert() {
alert.addAction(UIAlertAction(title: "Overwrite", style: .Default, handler: { (action:UIAlertAction!) -> Void in
}))
alert.addAction(UIAlertAction(title: "Nevermind", style: .Default, handler: { (action: UIAlertAction!) -> Void in
}))
presentViewController(alert, animated: true, completion: nil)
}
@IBAction func buttonPressed(sender: AnyObject) {
showAlert()
}
第一次出现时,这是正常的。第二次将显示四个按钮:
覆盖,没关系,覆盖,没关系。
第三次显示SIX按钮:
覆盖,没关系,覆盖,没关系,覆盖,没关系。
等等,永远。造成这种情况的原因是什么?如何防止它?
答案 0 :(得分:2)
您有一个变量alert
,您可以在代码中的某个位置实例化它。
在你的函数showAlert()
中添加动作(Overwrite,Nevermind),每次调用该函数时都会这样做。
在alert
中移动showAlert
的实例化,或者仅在您实例化alert
的位置添加一次操作。
func showAlert() {
let alert:UIAlertController = UIAlertController(title: "Are you sure?", message: "This will overwrite your information", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Overwrite", style: .Default, handler: { (action:UIAlertAction!) -> Void in
}))
alert.addAction(UIAlertAction(title: "Nevermind", style: .Default, handler: { (action: UIAlertAction!) -> Void in
}))
presentViewController(alert, animated: true, completion: nil)
}