【发布时间】:2021-02-22 10:22:31
【问题描述】:
如何关闭应用程序中的所有活动工作表?我有 2 种应用模式
switch appMode {
case .locked:
lockedView
case .unlocked:
contentView
}
当应用程序模式从一种状态更改为另一种状态时,在当前状态下会有一些工作表视图,此工作表不会消失。有没有一些 SwiftUI 解决方案?
【问题讨论】:
如何关闭应用程序中的所有活动工作表?我有 2 种应用模式
switch appMode {
case .locked:
lockedView
case .unlocked:
contentView
}
当应用程序模式从一种状态更改为另一种状态时,在当前状态下会有一些工作表视图,此工作表不会消失。有没有一些 SwiftUI 解决方案?
【问题讨论】:
您可以使用此行来关闭所有显示的工作表。
UIApplication.shared.windows.first?.rootViewController?.dismiss(animated: true, completion: nil)
【讨论】:
iOS 15
“windows”在 iOS 15 中已弃用
let rootViewController = UIApplication.shared.connectedScenes
.filter {$0.activationState == .foregroundActive }
.map {$0 as? UIWindowScene }
.compactMap { $0 }
.first?.windows
.filter({ $0.isKeyWindow }).first?.rootViewController
rootViewController?.dismiss(animated: true) {
// TODO: something
}
【讨论】: