所以我在使用SwiftUI中的NavigationView和NavigationLinks时遇到了一个问题,即尝试弹出当前屏幕,但在这种情况下无法正常工作。
我有3个屏幕 A -> B -> C
每个屏幕都有一个按钮用于弹出自身。
从B -> A的弹出可以正常工作,但是当你从A -> B -> C导航时,从C -> B的弹出就无法正常工作。
您知道可能是什么问题吗?我将在下面附上代码和视频。 该应用程序应支持iOS 14。
struct ScreenA: View {
@State private var showB = false
var body: some View {
NavigationView {
VStack {
Button("Go to B") {
showB = true
}
NavigationLink(destination: ScreenB(didTapGoBack: {
showB = false
}), isActive: $showB) {
EmptyView()
}
}
}
}
}
struct ScreenB: View {
var didTapGoBack: () -> Void
@State var showC = false
var body: some View {
VStack {
Button("Go to C") {
showC = true
}
Button("Back to Screen A") {
didTapGoBack()
}
NavigationLink(destination: ScreenC(didTapGoBack: {
showC = false
}), isActive: $showC) {
EmptyView()
}
}
}
}
struct ScreenC: View {
var didTapGoBack: () -> Void
var body: some View {
VStack {
Text("Screen C")
Button("Back to Screen B") {
didTapGoBack()
}
}
}
}
@main
struct TestNavApp: App {
var body: some Scene {
WindowGroup {
ScreenA()
}
}
}
@Environment(\.presentationMode) var presentationMode
presentationMode.wrappedValue.dismiss()
- Mircea Dragota