防止视图在NavigationView中弹出

时间:2020-03-08 10:51:45

标签: swift swiftui

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

NavigationLink(destination: DetailView() ) { Text("Show Detail View")  }

我需要一种解决方法,以防止当用户按下“后退”按钮时弹出详细视图。我找不到SwiftUI本机的方法。

1 个答案:

答案 0 :(得分:3)

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

通过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")  }
        }
    }
}