SwiftUI 从另一个视图更改观察到的对象
Posted
技术标签:
【中文标题】SwiftUI 从另一个视图更改观察到的对象【英文标题】:SwiftUI Change Observed Object From Another View 【发布时间】:2021-06-30 15:54:37 【问题描述】:我的 ContentView 中有一个观察到的对象,其中包含选项卡视图。
class GlobalValue: ObservableObject
@Published var stringValue = ""
@Published var intValue = 0
struct ContentView: View
@ObservedObject var globalValue = GlobalValue()
我需要从其中一个选项卡中更改 ContentView 的观察对象值。
ContentView().globalValue.intValue=25
它没有改变值。如何更改观察到的对象值?谢谢...
【问题讨论】:
这个ContentView()
你正在创建一个新的视图对象。你必须使用环境对象。
这能回答你的问题吗? Using @State variable does not work for changing view state in Body from child view
你可以参考这里:***.com/a/65940114/14733292 见第二个方法
【参考方案1】:
它正在改变价值。问题是您在结构中本地实例化 GlobalValue 的实例。它在结构之外没有生命。我想将Observable Object
用作这样的全局存储,您需要创建一次并使用该实例。
最简单的方法是添加
static let shared = GlobalValue()
在你的班级和你的结构中使用 globalValue = GlobalValue.shared
这基本上给了你一个单例。您将拥有一个所有视图都可以读取和写入的实例。
【讨论】:
以上是关于SwiftUI 从另一个视图更改观察到的对象的主要内容,如果未能解决你的问题,请参考以下文章
已发布/观察到的 var 在视图 swiftui 中未更新,带有调用函数
当从另一个 ObservedObject 链接到 Published 属性时,视图不会对更改做出反应