有一个和演员一起做的模特. ButtonView更改模型中的变量. 根据模型变量值的不同,ColorView显示的 colored颜色 会有所不同.
但这个例子行不通. 因为await keyword不能在视图修改器中使用.
这个问题能解决吗? 我遗漏了什么?
感谢您的阅读.
actor ActorModel: ObservableObject {
static let shared = ActorModel()
private init() {}
@Published var isActive: Bool = false
func toggleActive() {
isActive.toggle()
}
}
struct ContentView: View {
var body: some View {
VStack {
ColorView()
ButtonView()
}
.padding()
}
}
struct ColorView: View {
@ObservedObject private var model = ActorModel.shared
var body: some View {
VStack {
Rectangle()
.foregroundStyle(await model.isActive ? .red : .blue) // <-- Problem!
.frame(width: 100, height: 100)
}
.padding()
}
}
struct ButtonView: View {
@ObservedObject private var model = ActorModel.shared
var body: some View {
VStack {
Button("Toggle Color") {
Task {
await model.toggleActive()
}
}
}
.padding()
}
}