SwiftUI观察到的对象未跨视图更新
我无法让可观察对象模型工作 我有两个视图和一个视图模型的简单演示。视图模型为SwiftUI观察到的对象未跨视图更新,swiftui,observedobject,Swiftui,Observedobject,我无法让可观察对象模型工作 我有两个视图和一个视图模型的简单演示。视图模型为 import Foundation class Score: ObservableObject { @Published var total = 0 } 将一个按钮视图添加到总数中 struct ScoreButton: View { @ObservedObject var score = Score() var body: some View { Button(act
import Foundation
class Score: ObservableObject {
@Published var total = 0
}
将一个按钮视图添加到总数中
struct ScoreButton: View {
@ObservedObject var score = Score()
var body: some View {
Button(action: {
score.total += 1
}, label: {
Text("Add 1 to Total")
})
}
}
然后显示开始视图以显示结果
struct OBDemo: View {
@ObservedObject var result = Score()
var body: some View {
VStack {
ScoreButton()
.padding()
Text("Total = \(result.total)")
}
}
}
如果我将class、button和start视图放在一个文件中,它就会工作您正在创建两个不同的Score实例
:
struct ScoreButton: View {
@ObservedObject var result = Score() // instance #1
您需要在两个视图中使用相同的实例-将@ObservedObject
传递给子视图:
struct OBDemo: View {
@ObservedObject var result = Score() // create in the parent view
var body: some View {
VStack {
ScoreButton(result: result) // <- pass to the child view
.padding()
Text("Total = \(result.total)")
}
}
}
struct ScoreButton: View {
@ObservedObject var score: Score // declare only
var body: some View {
Button(action: {
score.total += 1
}, label: {
Text("Add 1 to Total")
})
}
}
struct-OBDemo:View{
@ObservedObject var result=Score()//在父视图中创建
var body:一些观点{
VStack{
ScoreButton(result:result)//您正在创建两个不同的Score实例:
struct ScoreButton: View {
@ObservedObject var result = Score() // instance #1
您需要在两个视图中使用相同的实例-将@ObservedObject
传递给子视图:
struct OBDemo: View {
@ObservedObject var result = Score() // create in the parent view
var body: some View {
VStack {
ScoreButton(result: result) // <- pass to the child view
.padding()
Text("Total = \(result.total)")
}
}
}
struct ScoreButton: View {
@ObservedObject var score: Score // declare only
var body: some View {
Button(action: {
score.total += 1
}, label: {
Text("Add 1 to Total")
})
}
}
struct-OBDemo:View{
@ObservedObject var result=Score()//在父视图中创建
var body:一些观点{
VStack{
ScoreButton(结果:结果)//谢谢。我如何更新ScoreButton的预览?静态变量预览:一些视图{ScoreButton(分数:#?#)@Jmcg你可以做ScoreButton(分数:分数())
谢谢。我如何更新ScoreButton的预览?静态变量预览:一些视图{ScoreButton(分数:#?#)@Jmcg您可以执行score按钮(score:score())