我有HomeView,其中包含TabView(位于NavigationView中,请参见下面的代码)。如果要从另一个视图(LoginView)加载HomeView,它将按预期加载,并且一切正常。如果我尝试像这样直接加载HomeView(代码在我的ContentView中):
if authService.isLoggedIn {
HomeView()
} else {
LoginView()
}
它再次加载带有底部标签的HomeView,但是我的第一个标签缺少文本,仅显示其图像。奇怪的是,如果我切换到标签页(即点击“帐户”),则第一个标签页上的文字会再次出现。
这是我的TabView的代码:
NavigationView {
TabView(selection: $selected) {
PlayView()
.tabItem {
Image(systemName: "play.circle.fill")
.font(.system(size: 24))
Text("Play")
}
.navigationBarHidden(true)
.navigationBarTitle("")
.tag(1)
AccountView()
.tabItem {
Image(systemName: "person.circle.fill")
.font(.system(size: 24))
Text("Account")
}
.tag(3)
NotificationsView()
.tabItem {
Image(systemName: "bell.fill")
.font(.system(size: 24))
Text("Notifications")
}
.tag(4)
}
.accentColor(Color(K.Colors.Secondary))
.navigationBarTitle("")
.navigationBarHidden(true)
}
注意:请注意图标的显示方式比其他图标要低,因此文本实际上根本不显示
我只尝试了几件事,因为TabView在苹果的官方文档中没有很好地记录。
答案 0 :(得分:3)
我找到了解决方案!原来底部显示的是导航栏标题,我将其设置为空字符串。因此,我在TabView元素的每个View上更改了导航栏标题。现在的代码如下所示:
NavigationView {
TabView(selection: $selected) {
PlayView()
.tabItem {
Image(systemName: "play.circle.fill")
.font(.system(size: 24))
Text("Play")
}
.navigationBarHidden(true)
.navigationBarTitle("Play")
.tag(1)
AccountView()
.tabItem {
Image(systemName: "person.circle.fill")
.font(.system(size: 24))
Text("Account")
}
.navigationBarHidden(true)
.navigationBarTitle("Account")
.tag(3)
NotificationsView()
.tabItem {
Image(systemName: "bell.fill")
.font(.system(size: 24))
Text("Notifications")
}
.navigationBarHidden(true)
.navigationBarTitle("Notifications")
.tag(4)
}
.accentColor(Color(K.Colors.Secondary))
.navigationBarTitle("")
.navigationBarHidden(true)
}
并且可以按预期工作。