SwiftUI Picker 视图中不显示值
Posted
技术标签:
【中文标题】SwiftUI Picker 视图中不显示值【英文标题】:No display of value in SwiftUI Picker view 【发布时间】:2020-05-07 18:38:29 【问题描述】:我最近在 SwiftUI 中更改了一些选择器代码,以使用 CaseIterable Enum 而不是项目数组。
这里是枚举:
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)
当我之前将数据放在数组中并使用时
let returnTypes = ["Scaler", "Vector", "Matrix"]
...
Picker("Return Type:", selection: $task.returnType)
ForEach(0..<returnTypes.count, id: \.self)
Text(returnTypes[$0])
task.returnType 的当前值显示在 V 形旁边的表单的选取器行上。使用枚举,task.returnType 不会显示在 V 形旁边,当我深入到选取器选择视图时,没有检查任何内容,即使我选择了一个项目,我仍然没有在 V 形旁边显示任何内容。还有其他人遇到这个问题吗?
【问题讨论】:
【参考方案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)
【讨论】:
完美!那就是我所缺少的。谢谢!以上是关于SwiftUI Picker 视图中不显示值的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有额外空间的情况下更改 SwiftUI Picker 视图大小?
SwiftUI:如何在 ForEach 循环中不显示“case none”
SwiftUI Picker SegmentedStyle 图片显示不好
如何在 Swiftui 中与其他组件一起在 ScrollView 或 VStack 中完全显示 Picker?