UIAlertViewDelegate在单独的类中

时间:2014-10-07 20:09:51

标签: ios swift

我定义了一个符合UIAlertViewDelegate的类:

class PaymentAlert: NSObject, UIAlertViewDelegate {

    var orderId: Int!
    var items: [String]

    init(orderId: Int, items: [String]) {
        self.orderId = orderId
        self.items = items
    }

    func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
        println(index)
    }

}

然后我在另一个班级做这些行动:

var alertClass = PaymentAlert(orderId: orderId, items: items)

                var alert = UIAlertView(title: "Payment declined", message: "Do you want to retry?", delegate: alertClass, cancelButtonTitle: "Cancel", otherButtonTitles: "Retry")

                alert.show()

一切运行正常,但是当我点击任何按钮时,clickedButtonIndex委托函数永远不会被调用,我试图将委托设置为alertClass.self,但没有做太多。

为什么clickedButtonIndex函数永远不会被调用?

1 个答案:

答案 0 :(得分:1)

UIAlertView的{​​{1}}属性为delegate,因此在点按按钮之前,您的weak实例已被销毁。

您必须在某处保留对PaymentAlert实例的强引用,直到警报被解除为止。