进入视图时如何隐藏标签栏?

问题描述 投票:0回答:1

我的 SwiftUI 应用程序中有一个 TabView,其中一个选项卡包含一个列表,其中包含指向其他视图的导航链接。当我导航到新视图时,我不希望标签栏出现在屏幕上,因此它仅在主选项卡上可见,而在后续页面上不可见。

这是我的 ContentView.swift 的外观:

import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView {
            FirstTabView()
                .tabItem {
                    Label("First Tab", systemImage: "house.fill")
                }

            SecondTabView()
                .tabItem {
                    Label("Second Tab", systemImage: "star.fill")
                }
            
            ThirdTabView()
                .tabItem {
                    Label("Third Tab", systemImage: "person.fill")
                }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

这是包含 NavigationLink 的视图之一(SecondTabView)的示例:

import SwiftUI

struct SecondTabView: View {
    var body: some View {
        NavigationStack {
            List {
                NavigationLink(destination: DetailView()) {
                    Text("Go to Detail View")
                }
            }
            .navigationTitle("Second Tab")
        }
    }
}

struct SecondTabView_Previews: PreviewProvider {
    static var previews: some View {
        SecondTabView()
    }
}

当我导航到 DetailView 时,我希望隐藏选项卡栏。我尝试过使用

.toolbar(.hidden, for: .tabBar)
,但行为并不流畅 — 有一个卡顿的过渡,标签栏在新视图滑入之前消失,而在滑回后又重新出现。

ios swift iphone swiftui tabbar
1个回答
0
投票

像这样使用NavigationStack

@main
struct LYFSuitApp: App {
    
    var body: some Scene {
        WindowGroup {
            NavigationStack{
                ContentView()
            }
        }
    }
}

用于导航

仅供使用

struct SecondTabView: View {
    var body: some View {
        List {
            NavigationLink(destination: DetailView()) {
                Text("Go to Detail View")
            }
        }
        .navigationTitle("Second Tab")
    }
}

struct SecondTabView_Previews: PreviewProvider {
    static var previews: some View {
        SecondTabView()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.