AlertAction 延迟完成 Swift 5
AlertAction delayed in Completions Swift 5
我有一个带有选项按钮的警报控制器,用于在文本字段中设置一个值,然后在完成时调用一个方法。警报视图正常弹出,但是当按下按钮设置文本字段值时,该方法实际运行,然后才能在文本字段中设置值。我在这里尝试了一些建议,例如使用 DispatchQueue.main.async 但没有任何区别。有没有一种方法可以延迟方法调用,以便可以在调用方法之前设置文本字段值,或者有一种方法可以加快在文本字段中设置的值?还是我的代码中遗漏了什么?
//Alert message function
func alertMessage(message: String, changeLDW: Int, changeZFW: Int) {
let attributedString = NSAttributedString(string: "WARNING!", attributes: [
NSAttributedString.Key.font : UIFont.systemFont(ofSize: 20),
NSAttributedString.Key.foregroundColor : UIColor.red ])
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
let alertController = UIAlertController(title: "",
message: message,
preferredStyle: .alert)
alertController.setValue(attributedString, forKey: "attributedTitle")
let cancelAction = UIAlertAction(title: "Ignore", style: .destructive, handler: nil)
let setLDWAction = UIAlertAction(title: "Set LDW", style: .default) { (_) -> Void in
self.maxLDWTextField.text = String(changeLDW)
self.calculateEstimates()
}
let setZFWAction = UIAlertAction(title: "Set ZFW", style: .cancel) { (_) -> Void in
self.estimatedZFWTextField.text = String(changeZFW)
self.calculateEstimates()
}
if changeLDW > 0 && changeZFW > 0{
alertController.addAction(cancelAction)
alertController.addAction(setLDWAction)
alertController.addAction(setZFWAction)
}
else if changeZFW > 0 && changeLDW == 0 {
alertController.addAction(cancelAction)
alertController.addAction(setZFWAction)
}
else if changeLDW > 0 && changeZFW == 0 {
alertController.addAction(cancelAction)
alertController.addAction(setLDWAction)
}
else {
alertController.addAction(cancelAction)
}
self.present(alertController, animated: true, completion: nil)
}
为什么不在 UIAlertAction 的处理程序中添加 [weak self]?
我有一个带有选项按钮的警报控制器,用于在文本字段中设置一个值,然后在完成时调用一个方法。警报视图正常弹出,但是当按下按钮设置文本字段值时,该方法实际运行,然后才能在文本字段中设置值。我在这里尝试了一些建议,例如使用 DispatchQueue.main.async 但没有任何区别。有没有一种方法可以延迟方法调用,以便可以在调用方法之前设置文本字段值,或者有一种方法可以加快在文本字段中设置的值?还是我的代码中遗漏了什么?
//Alert message function
func alertMessage(message: String, changeLDW: Int, changeZFW: Int) {
let attributedString = NSAttributedString(string: "WARNING!", attributes: [
NSAttributedString.Key.font : UIFont.systemFont(ofSize: 20),
NSAttributedString.Key.foregroundColor : UIColor.red ])
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
let alertController = UIAlertController(title: "",
message: message,
preferredStyle: .alert)
alertController.setValue(attributedString, forKey: "attributedTitle")
let cancelAction = UIAlertAction(title: "Ignore", style: .destructive, handler: nil)
let setLDWAction = UIAlertAction(title: "Set LDW", style: .default) { (_) -> Void in
self.maxLDWTextField.text = String(changeLDW)
self.calculateEstimates()
}
let setZFWAction = UIAlertAction(title: "Set ZFW", style: .cancel) { (_) -> Void in
self.estimatedZFWTextField.text = String(changeZFW)
self.calculateEstimates()
}
if changeLDW > 0 && changeZFW > 0{
alertController.addAction(cancelAction)
alertController.addAction(setLDWAction)
alertController.addAction(setZFWAction)
}
else if changeZFW > 0 && changeLDW == 0 {
alertController.addAction(cancelAction)
alertController.addAction(setZFWAction)
}
else if changeLDW > 0 && changeZFW == 0 {
alertController.addAction(cancelAction)
alertController.addAction(setLDWAction)
}
else {
alertController.addAction(cancelAction)
}
self.present(alertController, animated: true, completion: nil)
}
为什么不在 UIAlertAction 的处理程序中添加 [weak self]?