视图中的Swiftui@EnvironmentObject更新
我使用的是@EnvironmentObject(即ViewModel),我有一个demoData()函数 当我按下它时,数据会发生变化,但我的视图不会更新 如何获取要在视图中更改的数据 多谢各位 查看信息:视图中的Swiftui@EnvironmentObject更新,swiftui,Swiftui,我使用的是@EnvironmentObject(即ViewModel),我有一个demoData()函数 当我按下它时,数据会发生变化,但我的视图不会更新 如何获取要在视图中更改的数据 多谢各位 查看信息: import Combine import SwiftUI struct MainView: View { @EnvironmentObject var entry:EntryViewModel var body: some View { Tex
import Combine
import SwiftUI
struct MainView: View {
@EnvironmentObject var entry:EntryViewModel
var body: some View {
TextField("Beg Value", text: self.$entry.data.beg)
TextField("Beg Value", text: self.$entry.data.end)
Button(action: { self.entry.demoData() }) { Text("Demo Data") }
}
}
视图模型:
class EntryViewModel: ObservableObject {
@Published var data:EntryData = EntryData()
func demoData() {
var x = Int.random(in: 100000..<120000)
x = Int((Double(x)/100).rounded()*100)
data.beg = x.withCommas()
x = Int.random(in: 100000..<120000)
x = Int((Double(x)/100).rounded()*100)
data.end = x.withCommas()
}
这是因为
EntryData
是一个类,如果更改其属性,它仍然是同一个对象
此@Published仅在您重新分配数据
属性时才会触发:
@Published var data: EntryData = EntryData()
一种可能的解决方案是使用简单的结构而不是ObserveObject类: 当结构发生更改时,它会被复制,因此@Published将发送
objectWillChange
@Published var data: EntryData = EntryData()
struct EntryData {
var beg: String = ""
var end: String = ""
}