簡體   English   中英

在 SwiftUI 中使用 NavigationLink 導航時如何隱藏 TabBar?

[英]How to hide the TabBar when navigate with NavigationLink in SwiftUI?

我有一個帶有 2 個選項卡的 TabView,每個選項卡都包含一個 NavigationView。 導航到另一個視圖時,我需要隱藏TabBar 一種解決方案是將TabView放在一個 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)

        })

PS 我正在使用 Xcode 11 Beta 5

有點晚,但它會起作用,將您的 NavigationView 放在 TabView 之前,當您在選項卡式視圖中使用導航鏈接時,選項卡按鈕將被隱藏。

NavigationView{
    TabView{
        ...
    }
}

我有一個帶有2個標簽的TabView,每個標簽都包含一個NavigationView。 導航到另一個視圖時,我需要隱藏TabBar 一種解決方案是將TabView放在一個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)

        })

PS我正在使用Xcode 11 Beta 5

我對此有同樣的問題; 我做了以下操作來解決這個問題:

  1. 使用NavigationView Contain a TabViewHidden the NavigationBar
  2. 像這樣制作自定義 NavigaitonView
  3. 在下一個視圖中仍然隱藏 NavigationBar
// 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)
            }
    }

據我所知,如果您將導航視圖列為子項,則您無法隱藏標簽欄,您的標簽欄包含您的導航視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM