我的 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)
,但行为并不流畅 — 有一个卡顿的过渡,标签栏在新视图滑入之前消失,而在滑回后又重新出现。
像这样使用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()
}
}