Reputation: 578
At tap "Show Modal" button in navigation bar, the modal is shown. But, when "Dismiss" button is tapped, the modal never is showed. If the modal is swiped, the error don't occurr.
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()
})
}
}
}
Upvotes: 0
Views: 192
Reputation: 388
You need to toggle off the showModal
state. Something like this will work. I merged both views to demonstrate quickly
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()
})
}
}
}
}
Upvotes: 1