Swiftui - 正确处理根导航内的 Tab 导航
Swiftui - Handling Tab navigation inside a root navigation properly
我的swiftUI应用导航结构如下
View : A
{
Navigation View {
// List View on click
// Takes me to a Tab View
NavigationLink(destination : Tab View)
}
}
View : Tab View
{
ViewX
.tag(0)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View X")
.font(Font.custom("Roboto-Black", size: 30))
}
ViewY
.tag(0)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View Y")
.font(Font.custom("Roboto-Black", size: 30))
}
}
使用这种结构我无法正确控制视图的导航标题。
如果我将每个选项卡项目包装在导航视图中,我最终会按预期获得多个导航标题栏。
任何特定的方法(如隐藏根导航栏)使一个导航栏在嵌套视图中具有适当的标题更新?
您将无法自动更新导航标题,您需要执行以下操作:
import SwiftUI
enum Tabs: String {
case view1
case view2
}
struct tab: View {
@State var activeTab = Tabs.view1
var body: some View {
TabView(selection: $activeTab)
{
Text("View1")
.tag(Tabs.view1)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View X")
.font(Font.custom("Roboto-Black", size: 30))
}
Text("View2")
.tag(Tabs.view2)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View Y")
.font(Font.custom("Roboto-Black", size: 30))
}
}
.navigationTitle("Active View: \(activeTab.rawValue)")
}
}
我的swiftUI应用导航结构如下
View : A
{
Navigation View {
// List View on click
// Takes me to a Tab View
NavigationLink(destination : Tab View)
}
}
View : Tab View
{
ViewX
.tag(0)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View X")
.font(Font.custom("Roboto-Black", size: 30))
}
ViewY
.tag(0)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View Y")
.font(Font.custom("Roboto-Black", size: 30))
}
}
使用这种结构我无法正确控制视图的导航标题。 如果我将每个选项卡项目包装在导航视图中,我最终会按预期获得多个导航标题栏。 任何特定的方法(如隐藏根导航栏)使一个导航栏在嵌套视图中具有适当的标题更新?
您将无法自动更新导航标题,您需要执行以下操作:
import SwiftUI
enum Tabs: String {
case view1
case view2
}
struct tab: View {
@State var activeTab = Tabs.view1
var body: some View {
TabView(selection: $activeTab)
{
Text("View1")
.tag(Tabs.view1)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View X")
.font(Font.custom("Roboto-Black", size: 30))
}
Text("View2")
.tag(Tabs.view2)
.tabItem {
Image(systemName: "video.bubble.left.fill")
Text("View Y")
.font(Font.custom("Roboto-Black", size: 30))
}
}
.navigationTitle("Active View: \(activeTab.rawValue)")
}
}