我有一个TabView,每个Tab项都有单独的NavigationView堆栈。它运行良好,但当我打开任何NavigationView时,TabView栏仍然显示。我希望无论何时点击任何NavigationView时,它都会消失。
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中,这样当我单击NavigationView上的导航链接后,TabView栏会隐藏起来。但是这会破坏选项卡项目的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的唯一方法是使用嵌套的NavigationView。也许有一种正确实现嵌套NavigationView的方法?(据我所知,导航层次结构中应该只有一个NavigationView)。
在SwiftUI中,如何正确隐藏NavigationLink视图中的TabView栏?