Ios SwiftUI视图在更改@ObservedObject时未更新
以下是一个简单的基于MVVM的测试视图:Ios SwiftUI视图在更改@ObservedObject时未更新,ios,swift,swiftui,observableobject,Ios,Swift,Swiftui,Observableobject,以下是一个简单的基于MVVM的测试视图: import SwiftUI public struct Test: View { @ObservedObject public var viewModel = TestViewModel() public init() { } public var body: some View { VStack { Text(viewMo
import SwiftUI
public struct Test: View {
@ObservedObject public var viewModel = TestViewModel()
public init() {
}
public var body: some View {
VStack {
Text(viewModel.model.stri)
Button(action: {
self.viewModel.change()
}) {
Text("Change")
}
}.padding(50)
}
}
public class TestModel {
@Published public var condition: Bool = false
@Published var stri = "Random numbers"
}
public class TestViewModel: ObservableObject {
@Published var model = TestModel()
func change() {
model.condition.toggle()
model.stri = "\(Int.random(in: 1...10))"
}
}
从视图模型内部更新模型时,不会更新视图。
文本最终应该产生一些介于1和10之间的随机数。请告诉我哪里出错。这是因为您的
测试视图观察viewModel
,而不是viewModel.model
,它在您的场景中不会更改,因为它是一种参考类型
下面是一个解决方案
func change() {
model.condition.toggle()
model.stri = "\(Int.random(in: 1...10))"
self.objectWillChange.send() // << this one !!
}
func change(){
model.condition.toggle()
model.stri=“\(Int.random(in:1…10))”
self.objectWillChange.send()//