【问题标题】:TabItem switching not working properly in iOS13 devicesTabItem 切换在 iOS13 设备中无法正常工作
【发布时间】:2021-11-26 22:39:05
【问题描述】:

我创建了带有两个 tabItems 的 Tab bar 演示。每个选项卡项中都有视图控制器。

在切换标签时,它显示其各自的 UI。

这仅在 iOS 13 上发生。

代码:

struct ContentView: View {
    private enum Tab: Hashable {
           case one
           case two
    }
    @State private var selectedIndex = Tab.one
    var body: some View {
        TabView(selection: $selectedIndex) {
            DetestVXViewController(bgColor: .red).tabItem {
                Text("123")
            }.tag(Tab.one)
            DetestVXViewController(bgColor: .green).tabItem {
                Text("321")
            }.tag(Tab.two)
        }
       
    }
}

====

附上 iOS 13 和 15 的图片。

【问题讨论】:

  • 向我们展示DetestVXViewController 代码,尤其是您如何使用bgColor
  • self.view.backgroundColor = bgColor 是 viewDidLoad 中唯一的代码。它在 iOS14 中工作。

标签: ios swiftui tabview swiftui-tabview


【解决方案1】:

使用tag 似乎有点矫枉过正,除非您需要跟踪所述选项卡以进行快速操作或其他目的。如果需要,您仍然可以在其中使用标签。如果需要,您也可以使用@State 属性进行选择。您可以通过以下示例轻松切换选项卡。

struct ContentView: View {
    var body: some View {
        TabView {
            ForEach(1..<3) { index in
                SomeView(title: "\(index)")
                    .tabItem {
                        Image(systemName: "\(index).circle.fill")
                        Text("\(index)")3
                    }
                //.tag(index)
            }
        }
    }
}

【讨论】:

  • 没有@Cole。当您在选项卡中使用一些 uiviewrepresentable 视图时,它也不起作用。这显然是 ios13 中的一个问题。