如果您通过滑动取消返回上一屏幕的过程,则导航栏将保持不变而不会消失

问题描述 投票:0回答:1

[从带有navigationBarItems的视图中滑动,取消滑动并返回上一屏幕时,前一屏幕上的navigationBar保持不变,没有消失。

这是错误吗?

或者我的实现有误吗?

您可以检查现象here

struct TopView: View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: DetailView()) {
                    Text("Detail")
                }
            }
            .navigationBarTitle("Top")
        }
    }
}

struct DetailView: View {
    var body: some View {
        VStack {
            NavigationLink(destination: EditView()) {
                Text("Edit")
            }
        }
        .navigationBarTitle("Detail", displayMode: .inline)
    }
}

struct EditView: View {
    @Environment(\.presentationMode) private var presentationMode: Binding<PresentationMode>

    var body: some View {
        VStack {
            Text("Title")
        }
        .navigationBarTitle("Edit", displayMode: .inline)
        .navigationBarItems(
            trailing:
            Button(action: {
                self.presentationMode.wrappedValue.dismiss()
            }) {
                Text("Save")
            }
        )
    }
}

@@ Environment(。PresentationMode)私有var PresentationMode:绑定

如果不存在,就不会发生。

swift swiftui
1个回答
0
投票

这里已解决

struct DetailView: View {
    var body: some View {
        VStack {
            NavigationLink(destination: EditView()) {
                Text("Edit")         
            }.isDetailLink(false)                            // << here !!
        }
        .navigationBarTitle("Detail", displayMode: .inline)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.