简体   繁体   English

如何使用 NavigationView 直接从任何视图隐藏导航栏?

[英]How hide navigation bar always back from any view directly using NavigationView?

I am using xcode-14.2 & minimum target version 14. I have three views ContentView , Welcome & `FundTransfer.我正在使用 xcode-14.2 和最低目标版本 14。我有三个视图ContentViewWelcome和`FundTransfer。 Here is my case.这是我的情况。

  1. ContentView - Load first view & navigationBarHidden is working. ContentView - 加载第一个视图和 navigationBarHidden 正在工作。 When Welcome page button click it goes to Welcome page当点击Welcome页面按钮时,它会转到Welcome页面
  2. Welcome view - When Fund Transfer button is clicked, it goes to FundTransfer view欢迎视图 - 当点击Fund Transfer按钮时,它会进入FundTransfer视图
  3. FundTransfer - when Log out button is clicked, it goes to ContentView FundTransfer - 单击Log out按钮时,它转到ContentView

It goeslike: ContentView-> FundTransfer-> ContentView它是这样的:ContentView-> FundTransfer-> ContentView

Problem: When it goes from FundTransfer view to ContentView it shows navigationBar.问题:当它从FundTransfer视图转到ContentView时,它显示导航栏。 That means when back from FundTransfer view to ContentView shows navigationBar which was hidden at the first.这意味着当从FundTransfer视图返回到ContentView时,会显示最初隐藏的导航栏。

How do I hide navigation bar always back from any view directly to ContentView ?如何隐藏导航栏总是从任何视图直接返回到ContentView

Here is my code: ContentView:这是我的代码: ContentView:

    struct ContentView: View {
        
        @State private var showWelcome = false
        @State var isNavigationBarHidden: Bool = true
        
        var body: some View {
            NavigationView {
                VStack {
                    ScrollView {
                        VStack(alignment: .customCenter,spacing: 0){
                            
                            VStack {
                                SubmitButton(action: {
                                    self.showWelcome = true
                                }) {
                                    Text("Welcome page")
                                }
                            }
                            
                            NavigationLink(destination: Welcome(), isActive: $showWelcome) { EmptyView() }
                        }
                    }
                }
                
                .navigationBarTitle("") //this must be empty
                .navigationBarHidden(true)
                .navigationBarBackButtonHidden(true)
                
            }
        }
    }

Welcome View:欢迎查看:

    struct Welcome: View {
        @State private var showFundTransfer = false
        @Environment(\.presentationMode) var presentationMode
        var body: some View {
            VStack {
                ScrollView {
                    VStack(alignment: .customCenter,spacing: 0){
                        VStack {
                            SubmitButton(action: {
                                showFundTransfer = true
                            }) {
                                Text("Fund Transfer")
                            }
                        }
                        
                        NavigationLink(destination: FundTransfer(), isActive: $showFundTransfer) { EmptyView() }
                    }
                }
                
                .navigationBarHidden(true)
            }
            
        }
    }

FundTransfer View:资金转账视图:

        struct FundTransfer: View {
        @State var isNavigationBarHidden: Bool = true
        @State private var logon = false
        var body: some View {
            
            VStack {
                ScrollView {
                    VStack(alignment: .customCenter,spacing: 0){
                        SubmitButton(action: {
                                self.logon = true
                           
                        }) {
                            Text("Log out")
                        }
                    }
                }
                
                NavigationLink(destination: ApplicationSwitcher(), isActive: $logon) { EmptyView() }.opacity(0)
            }
            .navigationBarHidden(true)
            
        }
    }

Please help me..请帮我..

Add.navigationBarHidden(true) in NavigationLink also for eg: NavigationLink 中的 Add.navigationBarHidden(true) 也适用于 eg:

NavigationLink(destination: ApplicationSwitcher()
.navigationBarHidden(true), isActive: $logon) { EmptyView() }.opacity(0)

In ContentView add "navigationBarHidden(true)" after the closure of NavigationView instead of VStack as mentioned below:在 ContentView 中,在关闭 NavigationView 而不是 VStack 之后添加“navigationBarHidden(true)”,如下所述:

NavigationView {
...
}.navigationBarTitle("")
 .navigationBarHidden(true)
 .navigationBarBackButtonHidden(true)

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在SwiftUI中隐藏NavigationView Bar - How to hide NavigationView Bar in SwiftUI 如果上一个视图没有标题,如何使导航栏后退按钮总是说回来? - How to make Navigation Bar back button always say back if the previous view has no title? 是否可以隐藏导航栏但在视图控制器上保留后退按钮? 如果是这样怎么办? - Is it possible to hide navigation bar but keep back button on view controller? If so how? SwiftUI 如何在 NavigationView 中为导航栏强制使用分隔线 - SwiftUI how to force a divider for navigation bar in NavigationView bar Items 中的导航链接返回到 NavigationView 的顶部 - Navigation Link in bar Items goes back to top of NavigationView SwiftUI 中 NavigationView 导航栏的自定义后退按钮 - Custom back button for NavigationView's navigation bar in SwiftUI SwiftUI 如何在保留返回按钮的同时隐藏导航栏 - SwiftUI How To Hide The Navigation Bar While Keeping The Back Button SwiftUI TabView 内的 NavigationView 从堆栈中的任何视图弹出回 Root - SwiftUI NavigationView inside TabView pops back to Root, from any view in the stack 如何导航到 NavigationView 内的任何视图 - How to navigate to any view inside of a NavigationView 隐藏导航栏但保留返回按钮 - SwiftUI - Hide navigation bar but keep back button - SwiftUI
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM