首页 > 解决方案 > 带有案例而不是 int 的 TabBar - SwiftUI

问题描述

我正在尝试从我之前提出的问题中重用一些旧代码并且它不再工作了,引擎盖下发生了什么吗?

当我在应用程序午餐时,TabBar 转到索引 0 而不是 2。这是我当前的代码:

struct iOS_TabBarView: View {
    
    @State private var selectedTab: HostingBarCategories = .Screen3
    
    var body: some View {
        TabView(selection: $selectedTab) {
            Text("1")
                .tag(0)
                .tabItem {
                    Image(systemName: "pencil.and.outline")
                    Text("1")
                }
            Text("2")
                .tag(1)
                .tabItem {
                    Image(systemName: "checkmark")
                    Text("2")
                }
            Text("3")
                .tag(2)
                .tabItem {
                    Image(systemName: "calendar.circle.fill")
                    Text("3")
                }
            Text("4")
                .tag(3)
                .tabItem {
                    Image(systemName: "flame")
                    Text("4")
                }
            Text("5")
                .tag(3)
                .tabItem {
                    Image(systemName: "slider.horizontal.3")
                    Text("5")
                }
        }
    }
}

和 HostingBarCategories:

enum HostingBarCategories: Hashable, CaseIterable {
    case Screen1
    case Screen2
    case Screen3
    case Screen4
    case Screen5
    
    var string: String { String(describing: self) }
}

这是怎么回事?

谢谢

标签: swiftswiftui

解决方案


我假设标签和选择应该是相同的类型,所以试试

struct iOS_TabBarView: View {
    
    @State private var selectedTab: HostingBarCategories = .Screen3
    
    var body: some View {
        TabView(selection: $selectedTab) {
            Text("1")
                .tag(HostingBarCategories.Screen1)    // << like this for all !!


推荐阅读