在SwiftUI Picker视图中不显示值

时间:2020-05-07 18:38:29

标签: swiftui pickerview

我最近在SwiftUI中更改了一些选择器代码,以使用CaseIterable枚举而不是项目数组。

这是枚举:

m.cos(m.sin(latx)*m.sin(latp)+m.cos(latx)*m.cos(latp)*m.cos(lonp-lonx))

以下是选择器代码:

enum ReturnTypes : String, CaseIterable {
    case Scaler
    case Vector
    case Matrix
}

当我以前将数据放在数组中并使用

        NavigationView {
            Form {
                Picker("Return Type:", selection: $task.returnType) {
                    ForEach(ReturnTypes.allCases, id: \.self) { type in
                        Text(type.rawValue)
                    }
                }
            }
         }

task.returnType的当前值显示在人字形旁边的窗体的选择器行中。使用枚举时,燕尾形旁边不会显示task.returnType,当我向下钻取选择器选择视图时,不会检查任何内容,即使我选择了一个项目,燕尾形旁边也不会显示任何内容。还有其他人遇到这个问题吗?

1 个答案:

答案 0 :(得分:1)

所选内容必须与选择器数据类型相同,而不是“文本”标签,如以下工作示例所示。在Xcode 11.4 / iOS 13.4上进行了测试。

demo

struct ContentView: View {
        @State private var returnType: ReturnTypes = .Scaler
        var body: some View {
        NavigationView {
            Form {
                Picker("Return Type:", selection: $returnType) {
                    ForEach(ReturnTypes.allCases, id: \.self) { type in
                        Text(type.rawValue)
                    }
                }
            }
         }
    }
}