我不确定当我的视图模型嵌套在另一个视图模型中时为什么我的视图没有更新。我的理解是,子视图模型中的 @Published 属性会触发父视图模型中的更改,从而导致将更改推送到 UI。
这是子视图模型:
class FilterViewModel : ObservableObject, Identifiable {
var id = UUID().uuidString
var name = ""
var backgroundColour = ""
@Published var selected = false
private var cancellables = Set<AnyCancellable>()
init(name: String){
self.name = name
$selected.map { _ in
self.selected ? "Orange" : "LightGray"
}
.assign(to: \.backgroundColour, on: self)
.store(in: &cancellables)
}
func changeSelected() {
self.selected = !self.selected
}
}
Run Code Online (Sandbox Code Playgroud)
以下内容按预期工作,单击按钮后背景颜色发生变化。
struct ContentView: View {
@ObservedObject var filterVM = FilterViewModel(name: "A")
Button(action: { filterVM.changeSelected()}, label: {
Text(filterVM.name) …Run Code Online (Sandbox Code Playgroud) swiftui ×1