0

我想从不同的 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()
    }

}

我究竟做错了什么?

4

1 回答 1

4

这个变量 'var delegate = AlertViewDelegate()' 在作用域结束时被释放所以没有调用,尝试移动delegate到属性

于 2015-01-10T10:17:33.433 回答