我定义了一个符合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函数永远不会被调用?
答案 0 :(得分:1)
UIAlertView
的{{1}}属性为delegate
,因此在点按按钮之前,您的weak
实例已被销毁。
您必须在某处保留对PaymentAlert
实例的强引用,直到警报被解除为止。