以前在 SwiftUI (Xcode Beta 5( 中,模态的工作方式如下:
struct ContentView: View {
@State var modalIsPresented: Bool = false
var body: some View {
Button(action: {
self.modalIsPresented = true
}) {
Text("Show modal")
}
.sheet(isPresented: $modalIsPresented, content: {
ModalView()
})
}
}
struct ModalView: View {
@Environment(.presentationMode) var presentationMode
var body: some View {
Button(action: {
self.presentationMode.value.dismiss()
}) {
Text("Hide modal")
}
}
}
但是现在在 Xcode Beta 6 中,我找不到一种方法来关闭模态。不再有presentationMode
的value
属性,其他属性似乎没有任何有用的方法可以使用。
如何在 Xcode Beta 6 中关闭 SwiftUI 模式?
使用wrappedValue而不是value似乎在 Xcode Beta 6 中有效:
self.presentationMode.wrappedValue.dismiss()
您可以通过传入控制它显示的绑定来忽略.sheet
、.popover
、.actionSheet
,此处$modalIsPresented
并将其设置为 false 以编程方式关闭它。
尝试检查一下:
.presentation(showModal ? Modal(Text("Modal screen"), onDismiss: {
self.showModal.toggle()
}) : nil)
默认的模态表示不会证明用户关闭模态的任何视觉方式,但从 iOS 13 开始,用户可以向下滑动视图以使其消失。
详细内容:https://alejandromp.com/blog/2019/06/24/improving-swiftui-modal-presentation-api/