此代码不起作用,这意味着 onChange 永远不会被调用,并且当选择下拉选项时变量不会更改。
struct ExamplePicker: View {
@State var val: Int32 = 2
var body: some View {
HStack {
Menu {
Picker(selection: $val, label: EmptyView()) {
Text("Val1").tag(1)
Text("Val2").tag(2)
Text("Val3").tag(3)
}
} label: {
HStack {
Text("Value: ")
Spacer()
Text(String(format: "%d", val))
Spacer()
}
}
.onChange(of: val) { newSelection in
print(">>> HERE")
}
}
}
}
但是如果你将 val 更改为类型 Int 它工作得很好。 Int64 也可以正常工作。 这对我来说看起来像是一个错误
当
tag
项的 Picker
值与状态变量具有相同类型时,它可以正常工作。像这样:
Picker(selection: $val, label: EmptyView()) {
Text("Val1").tag(Int32(1))
Text("Val2").tag(Int32(2))
Text("Val3").tag(Int32(3))
}