SwiftUI Picker onChange Response 不可预测
SwiftUI Picker onChange Response is unpredictable
我做了一个这样的选择器;
但是有一个问题onChange在第一次选择时没有触发。
indexList[0] 的值为 0。当在 Picker onChange 中选择的不是 0 时,不会触发
但在接下来的选择中,它会按预期工作。
此外,当第一次使用选择器列表时,第一个项目会按预期勾选。 But when 2nd item is selected it does not fire onChange.
我找不到原因。
Menu {
Picker("", selection: $indexList[0]) {
ForEach(0..<myArray.count, id: \.self) { index in
Text(myArray[index])
}
}
.onChange(of: indexList[0],
perform: {_ in
dump(indexList[0])
})
} label: {
customLabel0
}
var customLabel0: some View{
HStack {
VStack(spacing: 10) {
Text(labels[0])
.foregroundColor(.black)
Text(myArray[indexList[0]])
.multilineTextAlignment(.center)
}
.foregroundColor(.white)
}
.frame(width: (width, height: height)
.background(Color.gray)
.cornerRadius(5)
}
现在,它工作得很好,
使用 onChange 的菜单放置时必须更改。
遗憾的是没有文档,我必须尝试很多东西。
Menu {
Picker("", selection: $indexList[0]) {
ForEach(0..<myArray.count, id: \.self) { index in
Text(myArray[index])
}
}
} label: {
customLabel0
}
.onChange(of: indexList[0],
perform: {_ in
dump(indexList[0])
})
var customLabel0: some View{
HStack {
VStack(spacing: 10) {
Text(labels[0])
.foregroundColor(.black)
Text(myArray[indexList[0]])
.multilineTextAlignment(.center)
}
.foregroundColor(.white)
}
.frame(width: (width, height: height)
.background(Color.gray)
.cornerRadius(5)
}
我做了一个这样的选择器;
但是有一个问题onChange在第一次选择时没有触发。
indexList[0] 的值为 0。当在 Picker onChange 中选择的不是 0 时,不会触发 但在接下来的选择中,它会按预期工作。
此外,当第一次使用选择器列表时,第一个项目会按预期勾选。 But when 2nd item is selected it does not fire onChange.
我找不到原因。
Menu {
Picker("", selection: $indexList[0]) {
ForEach(0..<myArray.count, id: \.self) { index in
Text(myArray[index])
}
}
.onChange(of: indexList[0],
perform: {_ in
dump(indexList[0])
})
} label: {
customLabel0
}
var customLabel0: some View{
HStack {
VStack(spacing: 10) {
Text(labels[0])
.foregroundColor(.black)
Text(myArray[indexList[0]])
.multilineTextAlignment(.center)
}
.foregroundColor(.white)
}
.frame(width: (width, height: height)
.background(Color.gray)
.cornerRadius(5)
}
现在,它工作得很好, 使用 onChange 的菜单放置时必须更改。 遗憾的是没有文档,我必须尝试很多东西。
Menu {
Picker("", selection: $indexList[0]) {
ForEach(0..<myArray.count, id: \.self) { index in
Text(myArray[index])
}
}
} label: {
customLabel0
}
.onChange(of: indexList[0],
perform: {_ in
dump(indexList[0])
})
var customLabel0: some View{
HStack {
VStack(spacing: 10) {
Text(labels[0])
.foregroundColor(.black)
Text(myArray[indexList[0]])
.multilineTextAlignment(.center)
}
.foregroundColor(.white)
}
.frame(width: (width, height: height)
.background(Color.gray)
.cornerRadius(5)
}