我试图忽略通过呈现的模态视图.sheet
在 SwiftUI 中 - 由Button
这是在一个NavigationView
s navigationBarItems
, 如下所示:
struct ModalView : View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
Button(action: {
self.presentationMode.value.dismiss()
}, label: { Text("Save")})
}
}
struct ContentView : View {
@State var showModal: Bool = false
var body: some View {
NavigationView {
Text("test")
.navigationBarTitle(Text("Navigation Title Text"))
.navigationBarItems(trailing:
Button(action: {
self.showModal = true
}, label: { Text("Add") })
.sheet(isPresented: $showModal, content: { ModalView() })
)
}
}
}
点击“保存”按钮时,模式不会消失,它只是保留在屏幕上。摆脱它的唯一方法是向下滑动模式。
打印的值self.presentationMode.value
总是显示false
所以它似乎认为它还没有被呈现。
这只发生在它从NavigationView
。把它拿出来,效果很好。
我在这里遗漏了什么,还是这是一个测试版问题?
您需要移动.sheet
按钮之外。
NavigationView {
Text("test")
.navigationBarTitle(Text("Navigation Title Text"))
.navigationBarItems(trailing:
Button("Add") {
self.showModal = true
}
)
.sheet(isPresented: $showModal, content: { ModalView() })
}
您甚至可以将其移至外部NavigationView
关闭。
NavigationView {
Text("test")
.navigationBarTitle(Text("Navigation Title Text"))
.navigationBarItems(trailing:
Button("Add") { self.showModal = true }
)
}
.sheet(isPresented: $showModal, content: { ModalView() })
请注意,如果您有一个简单的文本按钮,您还可以简化按钮调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)