我有一个 TabView 和每个 Tab 项的单独 NavigationView 堆栈。它运行良好,但是当我打开任何 NavigationLink 时,仍然显示 TabView 栏。每当我单击任何 NavigationLink 时,我都希望它消失。
struct MainView: View {
@State private var tabSelection = 0
var body: some View {
TabView(selection: $tabSelection) {
FirstView()
.tabItem {
Text("1")
}
.tag(0)
SecondView()
.tabItem {
Text("2")
}
.tag(1)
}
}
}
struct FirstView: View {
var body: some View {
NavigationView {
NavigationLink(destination: FirstChildView()) { // How can I open FirstViewChild with the TabView bar hidden?
Text("Go to...")
}
.navigationBarTitle("FirstTitle", displayMode: .inline)
}
}
}
我找到了将 TabView 放在 NavigationView 中的解决方案,因此在单击 NavigationLink 后,TabView 栏被隐藏。但这会弄乱 Tab 项的 NavigationBarTitles。
struct MainView: View {
@State private var tabSelection = 0
var body: some View {
NavigationView {
TabView(selection: $tabSelection) {
...
}
}
}
}
struct FirstView: View {
var body: some View {
NavigationView {
NavigationLink(destination: FirstChildView()) {
Text("Go to...")
}
.navigationBarTitle("FirstTitle", displayMode: .inline) // This will not work now
}
}
}
使用此解决方案,使每个 TabView 项具有不同 NavigationTabBars 的唯一方法是使用嵌套 NavigationViews。也许有一种方法可以正确实现嵌套的 NavigationViews?(据我所知,导航层次结构中应该只有一个 NavigationView)。
如何在 SwiftUI 中正确隐藏 NavigationLink 视图中的 TabView 栏?