Ios 在SwiftUI中使用NavigationLink导航时如何隐藏选项卡栏?

Ios 在SwiftUI中使用NavigationLink导航时如何隐藏选项卡栏?,ios,swiftui,Ios,Swiftui,我有一个选项卡视图,其中有两个选项卡,每个选项卡包含一个NavigationView。当导航到另一个视图时,我需要隐藏选项卡栏。一种解决方案是将选项卡视图放在一个NavigationView中,但我必须为每个NavigationView设置不同的属性 TabView(selection: $selectedTab, content: { NavigationView { VStack { Naviga

我有一个选项卡视图,其中有两个选项卡,每个选项卡包含一个NavigationView。当导航到另一个视图时,我需要隐藏
选项卡栏
。一种解决方案是将
选项卡视图
放在一个NavigationView中,但我必须为每个NavigationView设置不同的属性

TabView(selection: $selectedTab, content: {
            NavigationView {
                VStack {
                    NavigationLink(destination: Text("SecondView Tab1")) {
                        Text("Click")
                    }
                }
            }.tabItem {
                Text("ONE")
            }.tag(0)

            NavigationView {
                VStack {
                    NavigationLink(destination: Text("SecondView Tab2")) {
                        Text("Click")
                    }
                }
            }.tabItem {
                Text("TWO")
            }.tag(1)

        })

另外,我正在使用Xcode 11 Beta 5

据我所知,您无法隐藏选项卡栏。如果您的导航视图是作为子视图列出的,您的选项卡栏包含您的导航视图。

有点晚了,但它可以工作,将NavigationView置于选项卡视图之前,在选项卡视图中使用导航链接时,选项卡按钮将被隐藏

NavigationView{
    TabView{
        ...
    }
}

我对此也有同样的问题; 我采取了以下措施来解决这个问题:

  • 使用
    NavigationView包含选项卡视图
    隐藏导航栏
  • 像这样创建自定义NavigaitonView
  • 在下一个视图中仍然隐藏导航栏

  • 看看这个,我在这里发布了一个解决这个限制的方法:我发现的最佳答案这会带来意想不到的后果
    // root tab
    NavigationView {
        TabView {
            // some
        }
        .navigationBarTitle(xxx, displayMode: .inline)
        .navigationBarHidden(true)
    }
    
    // custom navigation view
    @available(iOS 13.0.0, *)
    struct MyNavigationView: View {
        var body: some View {
            HStack {
                Spacer()
                Text(some)
                Spacer()
            }
            .frame(height: 44)
        }
    }
    
    // this view 
    VStack {
                    MyNavigationView()
                    Image(some)
                        .resizable()
                        .frame(width: 100, height: 100, alignment: .top)
                        .padding(.top, 30)
                    Spacer()
                    HStack {
                        ClockView()
                        Spacer()
                        NavigationLink(
                            destination: DynamicList(),
                            label: {
                                Image(some)
                            }).navigationBarHidden(true)
                    }
                    .padding(EdgeInsets(top: 0, leading: 15, bottom: 0, trailing: 15))
                    
                    Spacer()
                }
    
    // next view
    var body: some View {
                VStack {
                    List {
                        MyNavigationView()
                        ForEach(date, id: \.self) { model in
                            Text(model)
                        }
                    }
                    .navigationBarHidden(true)
                    .navigationBarTitle(some, displayMode: .inline)
                }
        }