【发布时间】:2020-09-10 05:36:37
【问题描述】:
我有一个 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 项具有不同 NavigationTabBar 的唯一方法是使用嵌套 NavigationView。也许有一种方法可以正确实现嵌套的 NavigationViews? (据我所知,导航层次结构中应该只有一个 NavigationView)。
如何在 SwiftUI 中正确隐藏 NavigationLink 视图中的 TabView 栏?
【问题讨论】:
-
@rbaldwin 这个解决方案弄乱了 NavigationBar 的标题。我想让每个标签项都有不同的 NavigationBar 标题。在 NavigationView 中使用 TabView 我只能设置一次 NavigationBar 标题。
标签: ios swift swiftui swiftui-tabview swiftui-navigationview