ios - 没有动画的UIAlertController的dismiss方法是否同步执行?

标签 ios swift uialertcontroller

如果我调用(在 UIViewController 中)

alert.dismiss(animated: false, completion: nil)
print("executed after dismiss?")

鉴于警报是先前呈现的 UIAlertController,dismiss 方法是否同步执行?

我能做吗:

alert.dismiss(animated: false, completion: nil)
let newAlert = UIAlertController(...)
present(newAlert, animated: true, completion: nil)

在呈现 newAlert 时不必担心问题?

最佳答案

与大多数动画方法一样,当您关闭 UIAlertController 时,您只是让球滚动。 View Controller 被异步关闭和删除。为了测试这一点,我们可以使用如下代码:

let alert = UIAlertController(title: "Oh No!", message: ":(", preferredStyle: UIAlertControllerStyle.alert)

self.present(alert, animated: true, completion: nil)
print(presentedViewController) // Optional(<UIAlertController: 0x7fefe901e670>)

alert.dismiss(animated: true, completion: nil)
print(presentedViewController) // Optional(<UIAlertController: 0x7fefe901e670>) 

如上所示,警报 View Controller 并没有立即作为呈现的 View Controller 被删除。您仍然可以在关闭旧警报后立即显示新警报。但是,最佳做法是将第二个警报的代码放在第一个警报的完成处理程序中。在呈现的 View Controller 上调用 viewDidDisappear 之后调用此完成处理程序。

关于ios - 没有动画的UIAlertController的dismiss方法是否同步执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943817/

相关文章:

iOS 以编程方式更改 AppDelegate 中的 View

ios - 魔法记录崩溃: NSManagedObjectContext Queue EXC_BAD_ACCESS KERN_INVALID_ADDRESS

ios - 防止 UIAlertController 关闭

ios - Xcode 11 测试版 5 : UI freezes when adding textFields into UIAlertController

Swift 3 和无法识别的选择器发送到创建按钮的实例错误

ios - 在 UITableViewCell 中调用 UIAlertController

ios - 如何使用自动布局/ Storyboard截断 UIImage 旁边的 UILabel?

ios - 是否有预处理器指令导致 XCode 构建失败?

iOS - 在应用程序外触发点击事件 - 比如在应用程序抽屉中

swift - 当我从一个节点切换到另一个节点时,是否应该删除所有 SKSpriteNodes 和 Labels