在我的SwiftUI视图中,当Toggle()改变状态时,我必须触发一个动作。Toggle本身只需要一个Binding。
因此,我尝试在@State变量的didSet中触发动作。但是didSet从未被调用。
是否有任何其他方法可以触发操作?或者任何观察@State变量值更改的方法?
我的代码如下:
struct PWSDetailView : View {
@ObjectBinding var station: PWS
@State var isDisplayed: Bool = false {
didSet {
if isDisplayed != station.isDisplayed {
PWSStore.shared.toggleIsDisplayed(station)
}
}
}
var body: some View {
VStack {
ZStack(alignment: .leading) {
Rectangle()
.frame(width: UIScreen.main.bounds.width, height: 50)
.foregroundColor(Color.lokalZeroBlue)
Text(station.displayName)
.font(.title)
.foregroundColor(Color.white)
.padding(.leading)
}
MapView(latitude: station.latitude, longitude: station.longitude, span: 0.05)
.frame(height: UIScreen.main.bounds.height / 3)
.padding(.top, -8)
Form {
Toggle(isOn: $isDisplayed)
{ Text("Wetterstation anzeigen") }
}
Spacer()
}.colorScheme(.dark)
}
}
期望的行为是当Toggle()改变状态时,触发动作"PWSStore.shared.toggleIsDisplayed(station)"。
Toggle(isOn: $isDisplayed)
替换为Toggle(isOn: $station.isDisplayed)
,然后在您的“PWS”类中的“didSet”上更新“isDisplayed”以更新“PWSStore.shared”? - graycampbell