如何在UIAlertAction handler中阻止UIAlertController dismiss?
时间: 2024-09-15 13:02:05 浏览: 20
在Swift中,如果你想要在UIAlertAction的handler里阻止UIAlertController的自动dismiss,通常做法是在处理完用户的操作后,手动调用`dismiss`方法,但你可以选择不在那个闭包里执行`dismiss`,而是将它放在稍后的任务队列中,比如`DispatchQueue.main.async`,这样可以在自定义逻辑完成后才执行dismiss。例如:
```swift
let cancelAction = UIAlertAction(title: "取消", style: .cancel) { (action) in
// 阻止默认的dismiss,先不做任何事情
// 这里你可以执行自定义的清理工作或者其他需要的操作
DispatchQueue.main.async {
// 在异步块中执行dismiss
self.dismiss(animated: true, completion: nil)
}
}
// ...
let alertController = UIAlertController(title: "提示", message: "这是一个警告", preferredStyle: .alert)
alertController.addAction(cancelAction)
// 展示AlertController
self.present(alertController, animated: true, completion: nil)
```
这样做的好处是可以让你有足够的时间来处理用户的行为,而不需要立即结束当前的视图。