我想从不同的 ViewControllers 弹出一个警报。因为我想处理用户是否一致地单击“确定”或“取消”,所以我决定实现我自己的 UIAlertViewDelegate 并从我的 UIViewController 调用它。
问题是,当我单击“确定”或“取消”时,将永远不会调用 willDismissWithButtonIndex、didDismissWithButtonIndex 和 clickedButtonAtIndex。我知道我的委托正在被使用,因为当警报显示时会调用 willPresentAlertView() 和 didPresentAlertView()。
这是我的代表的代码:
import UIKit
class AlertViewDelegate: NSObject, UIAlertViewDelegate {
func willPresentAlertView(alertView: UIAlertView) {
println("will present")
}
func didPresentAlertView(alertView: UIAlertView) {
println("did present")
}
func alertViewCancel(alertView: UIAlertView) {
println("cancelled")
}
func alertView(alertView: UIAlertView, willDismissWithButtonIndex buttonIndex: Int) {
println("will dismiss")
}
func alertView(alertView: UIAlertView, didDismissWithButtonIndex buttonIndex: Int) {
println("did dismiss")
}
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
println("clicked")
}
}
这是我的 ViewController 的代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var delegate = AlertViewDelegate()
var alert = UIAlertView(title: "alert", message: "blah blah", delegate: delegate, cancelButtonTitle: "cancel", otherButtonTitles: "OK")
alert.show()
}
}
我究竟做错了什么?