使用 SwiftUI 在导航栏内调用模态视图时,我在关闭模态视图时遇到问题
I'm having problem dismissing a modal view when calling it inside a navigation bar with SwiftUI
点击导航栏中的 "Show Modal" 按钮,显示模态。
但是,当 "Dismiss" 按钮被点击时,模式永远不会显示。
如果滑动模式,则不会发生错误。
import SwiftUI
struct ContentView: View {
@State var showModal = false
var body: some View {
NavigationView {
Text("Hello, World!")
.navigationBarItems(trailing: Button("Show Modal") {
self.showModal = true
})
}.sheet(isPresented: self.$showModal) {
Modal()
}
}
}
struct Modal: View {
@Environment(\.presentationMode) var mode
var body: some View {
NavigationView {
Text("Modal")
.navigationBarItems(leading: Button("Dismiss") {
self.mode.wrappedValue.dismiss()
})
}
}
}
您需要关闭 showModal
状态。这样的事情会起作用。我合并了两个视图以快速演示
import SwiftUI
struct ContentView: View {
@State var showModal = false
@Environment(\.presentationMode) var mode
var body: some View {
NavigationView {
Text("Hello, World!")
.navigationBarItems(trailing: Button("Show Modal") {
self.showModal.toggle()
})
}.sheet(isPresented: self.$showModal) {
NavigationView {
Text("Modal")
.navigationBarItems(leading: Button("Dismiss") {
self.showModal.toggle()
self.mode.wrappedValue.dismiss()
})
}
}
}
}
点击导航栏中的 "Show Modal" 按钮,显示模态。 但是,当 "Dismiss" 按钮被点击时,模式永远不会显示。 如果滑动模式,则不会发生错误。
import SwiftUI
struct ContentView: View {
@State var showModal = false
var body: some View {
NavigationView {
Text("Hello, World!")
.navigationBarItems(trailing: Button("Show Modal") {
self.showModal = true
})
}.sheet(isPresented: self.$showModal) {
Modal()
}
}
}
struct Modal: View {
@Environment(\.presentationMode) var mode
var body: some View {
NavigationView {
Text("Modal")
.navigationBarItems(leading: Button("Dismiss") {
self.mode.wrappedValue.dismiss()
})
}
}
}
您需要关闭 showModal
状态。这样的事情会起作用。我合并了两个视图以快速演示
import SwiftUI
struct ContentView: View {
@State var showModal = false
@Environment(\.presentationMode) var mode
var body: some View {
NavigationView {
Text("Hello, World!")
.navigationBarItems(trailing: Button("Show Modal") {
self.showModal.toggle()
})
}.sheet(isPresented: self.$showModal) {
NavigationView {
Text("Modal")
.navigationBarItems(leading: Button("Dismiss") {
self.showModal.toggle()
self.mode.wrappedValue.dismiss()
})
}
}
}
}