防止视图在导航视图中弹出

JAH*_*lia 5 swift swiftui

我有一个 SwiftUI 视图,它使用常规方法推送新的详细信息视图NavigationLink:

NavigationLink(destination: DetailView() ) { Text("Show Detail View")  }
Run Code Online (Sandbox Code Playgroud)

我需要一种解决方法来防止用户按下后退按钮时弹出详细信息视图。我找不到 SwiftUI 本机方法来做到这一点。

Asp*_*eri 4

请在下面找到使用自定义后退按钮的可能方法(注意:添加任何前导导航栏项目都会自动禁用默认后退按钮)

使用 Xcode 11.2 / iOS 13.2 进行测试

struct DemoDetailsWithCustomBack: View {
    @Environment(\.presentationMode) var presentationMode
    @State private var allowsBack = true

    var body: some View {
            Text("Details here")
                .navigationBarItems(
                    leading: Button(action: {
                        if self.allowsBack {
                            self.presentationMode.wrappedValue.dismiss()
                        } else {
                            // activate alert here
                        }
                    }, label: { Image(systemName: "chevron.left") })
                )
    }
}

struct TestNavBarButton_Previews: PreviewProvider {
    static var previews: some View {
        NavigationView {
            NavigationLink(destination: DemoDetailsWithCustomBack() ) { Text("Show Detail View")  }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)