我最近在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,当我向下钻取选择器选择视图时,不会检查任何内容,即使我选择了一个项目,燕尾形旁边也不会显示任何内容。还有其他人遇到这个问题吗?
答案 0 :(得分:1)
所选内容必须与选择器数据类型相同,而不是“文本”标签,如以下工作示例所示。在Xcode 11.4 / iOS 13.4上进行了测试。
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)
}
}
}
}
}
}