【问题标题】:TabView does not work correctly on iOS13 SwiftUITabView 在 iOS13 SwiftUI 上无法正常工作
【发布时间】:2020-11-08 21:36:16
【问题描述】:

我创建了一个包含 4 个项目的 TabView,但在 iOS 13.x 中,只有第一个视图可以正确显示。 当我单击另一个项目的图标时,视图未正确显示,但应用程序仅显示白色视图。如果我在 iOS > 14 上运行该应用程序,我可以正确查看所有视图。

TabView 实现:

struct ContentView: View {

private enum Tab: Hashable {
       case discovery
       case qrcode
       case devices
       case settings
}
   
@State private var selectedTab: Tab = .discovery

var body: some View {
    NavigationView {
    TabView(selection: $selectedTab) {
        DiscoveryView()
            .tabItem {
                VStack {
                    Image(systemName: "lock.rotation.open")
                    Text("Discovery")
                }
            }
            .tag(0)
        QrCodeView()
            .tabItem {
                VStack {
                    Image(systemName: "qrcode.viewfinder")
                    Text("QrCode")
                }
            }
            .tag(1)
        DevicesView()
            .tabItem {
                VStack {
                    Image(systemName: "qrcode.viewfinder")
                    Text("My devices")
                }
            }
            .tag(2)
        SettingsView()
            .tabItem {
                VStack {
                    Image(systemName: "gear")
                    Text("Settings")
                }
            }
            .tag(3)
        }
    }
}

其中一种观点的实现:

struct QrCodeView: View {
    var body: some View { 
        Text("QrCode")
    }
}

我哪里做错了?

【问题讨论】:

    标签: ios view swiftui ios13 tabview


    【解决方案1】:

    这可能是selection的原因...selectiontag类型应该相同,所以试试

    @State private var selectedTab: Tab = .discovery
    
    var body: some View {
        NavigationView {
        TabView(selection: $selectedTab) {
            DiscoveryView()
                .tabItem {
                    VStack {
                        Image(systemName: "lock.rotation.open")
                        Text("Discovery")
                    }
                }
                .tag(.discovery)      // << here !!
    
            QrCodeView()
                .tabItem {
                    VStack {
                        Image(systemName: "qrcode.viewfinder")
                        Text("QrCode")
                    }
                }
                .tag(.qrcode)        // << here !!
    
     // ... others the same
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 2020-01-30
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多