【问题标题】:SwiftUI - TabView initial tabItem not displaying textSwiftUI - TabView 初始 tabItem 不显示文本
【发布时间】:2020-10-14 14:16:28
【问题描述】:

问题总结

我有 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)
}

预期结果

实际结果

注意:注意图标是如何显示在比其他图标更低的级别,所以文本实际上根本没有显示

到目前为止我尝试了什么

我确实只尝试了几件事,因为 Apple 的官方文档中没有很好地记录 TabView。

  • 我尝试在视图层次结构中上下移动 NavigationView
  • 为初始选择设置另一个选项卡
  • 在 .tabItem 部分中切换 Image() 和 Text() 的位置
  • 通过互联网搜索类似问题

【问题讨论】:

  • 这听起来像是一个 SwiftUI 错误。你试过最新的 Xcode 了吗?
  • @Asperi 我正在使用最新的稳定版本。还不愿意走这条路并使用测试版。
  • 我有类似的问题,但仅限于模拟器。在设备上它工作正常。你在哪里运行你的应用程序?
  • 我在模拟器和物理设备上都有这个问题。 @pawello2222
  • @Dasvil 我无法用您提供的代码重现问题。

标签: ios swift xcode swiftui


【解决方案1】:

我找到了解决办法!结果显示在底部的是导航栏标题,我将其设置为空字符串。所以我在 TabView 元素的每个视图上都更改了导航栏标题。现在的代码如下所示:

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)
}

它按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多