我有一个使用 hostingController 呈现的 swiftUI 视图:
let hostingController = UIHostingController(rootView: FirstView)
someVC.present(hostingController, animated: true)
FirstView 反过来使用 .sheet(IsPresented 和布尔值来呈现第二个 SwiftUI 视图,以确定是否应按如下方式显示它:
struct FirstView: View {
@Environment(\.presentationMode) var presentationMode
@State var showSecondView = false
//change showSecondView to true so it displays as a sheet
.sheet(isPresented: $showSecondView) {
SecondView()
}
}
在 SecondView 中,我想用一个按钮同时关闭 SecondView 和 FirstView。这个按钮可以关闭 SecondView,但我不知道如何同时关闭 FirstView,因为 FirstView 是在托管控制器中呈现的,没有使用布尔值。
如果 SecondView 是 First View 中的警报,那么我可以使用环境变量 presentationMode 来消除,但是,该变量似乎无法从 SecondView 访问。
struct SecondView: View {
@Environment(\.dismiss) var dismiss
Button("OK") {
//THIS DOES NOT WORK BECAUSE presentationMode is out of scope
presentationMode.wrappedValue.dismiss()
dismiss()//
}
}
我怎样才能不仅关闭当前(或第二)工作表,而且还关闭在 hostingController 中呈现的呈现(或第一视图)。
提前感谢任何建议。