有这样的警告功能:
var completionHandlers: [() -> Void] = []
func alert(header: String,
message: String,
okButton: String,
completionHandler: @escaping () -> Void) {
let alert: UIAlertController = UIAlertController.init(title: header,
message: message,
preferredStyle: UIAlertControllerStyle.alert)
let ok: UIAlertAction = UIAlertAction.init(title: okButton,
style: UIAlertActionStyle.default) { (_) in
alert.dismiss(animated: true, completion: {
self.completionHandlers.append(completionHandler)
})
}
alert.addAction(ok)
self.present(alert, animated: true)
}
这里使用了这个函数:
self.alert(header: "Warning", message: "The date of end must be selected", okButton: "Ок", completionHandler: {
print("test")
})
所以问题是,我的完成处理程序根本不起作用。即使测试也没有在控制台中打印。那么如何使用闭包来纠正make处理程序呢?
答案 0 :(得分:0)
您实际上从未调用传递给alert
的完成处理程序。您所做的只是将其添加到数组中。
不需要completionHandlers
数组(至少不在您发布的代码中)。而且您无需在警报操作中解除警报。
将警报操作更改为:
let ok: UIAlertAction = UIAlertAction.init(title: okButton, style: .default) { (_) in
completionHandler()
}