【发布时间】:2020-10-09 08:15:55
【问题描述】:
根据 Apple 关于Picker in SwiftUI using an Enum 的文档,如果枚举除了CaseIterable 之外还符合Identifiable 协议,则遍历所有案例的选择器应该本地更新绑定变量。
我测试了它,它没有按预期工作。
enum Flavor: String, CaseIterable, Identifiable {
case chocolate
case vanilla
case strawberry
var id: String { self.rawValue }
}
struct EnumView: View {
@State private var selectedFlavor = Flavor.chocolate
var body: some View {
VStack {
Picker("Flavor", selection: $selectedFlavor) {
ForEach(Flavor.allCases) { flavor in
Text(flavor.rawValue.capitalized)//.tag(flavor)
}
}
Text("Selected flavor: \(selectedFlavor.rawValue)")
}
}
}
但是,如果我为每个视图传递一个tag,它就会起作用。
这里发生了什么?苹果文档有错吗? selectedFlavor 变量需要 Flavor 类型的值,但选择器中使用的 id 实际上是 String。
谢谢。
【问题讨论】: