所以我HStack()在一些按鈕上有一個 ForEach ,如下面的代碼所示:
@State var mapType = 0
@State var mapDisplay: [String] = [
"Standard",
"Hybrid",
"Image",
]
HStack {
ForEach(mapDisplay, id: \.self) { item in
VStack {
HStack {
VStack {
Button(action: {
switch item {
case "Standard": mapSettings.mapType = 0
case "Hybrid": mapSettings.mapType = 1
case "Image": mapSettings.mapType = 2
default: mapSettings.mapType = 0
}
print("User has selected \(item) map type.")
}, label: {
ZStack {
Text(item)
}
}) //: Button
} //: VStack
} //: HStack
}
} //: ForEach
.onChange(of: mapType) { newValue in
mapSettings.mapType = newValue
log.info("The new map type is: \(newValue)")
}
} //: HStack
按鈕的輸出如下(僅前 3 個):

onChange()有誰知道在前 3 個按鈕之間單擊時如何觸發?我似乎根本無法觸發log.info。
uj5u.com熱心網友回復:
你不需要
@State var mapType = 0
您的按鈕正在設定
mapSettings.mapType
然后只需改變
.onChange(of: mapSettings.mapType) { newValue in
log.info("The new map type is: \(newValue)")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/522251.html
標籤:迅速迅捷
上一篇:從陣列中解碼1957年的字典
