SwiftUI从另一个视图更改观察到的对象



我的ContentView中有一个观察到的对象,它包含tabview。

class GlobalValue: ObservableObject {
@Published var stringValue = ""
@Published var intValue = 0
}
struct ContentView: View {
@ObservedObject var globalValue = GlobalValue()
}

在其中一个选项卡中,我需要更改ContentView观察到的对象值。

ContentView().globalValue.intValue=25

它不会改变值。如何更改观察到的对象值?谢谢

它正在更改值。问题是您正在结构中本地实例化GlobalValue的实例。它在结构之外没有生命。如果你想像那样使用Observable Object作为全局存储,你需要创建一次并使用该实例。

最简单的方法是添加类和结构中的static let shared = GlobalValue()使用globalValue = GlobalValue.shared,它本质上为您提供了一个单例。你将有一个实例,所有的视图都可以读写。

最新更新