我是SwiftUI的新手,目前正在构建我的第一个应用程序。但是,我遇到了一个问题。
我正在编写一个多视图应用程序,我希望在其中使用某种全局变量,以便能够从我的所有视图访问和编辑它们。例如,我在应用程序启动时询问用户他的“性别”、“体重”和“许可证”。但是,我还希望他能够更改“设置”类别中的详细信息(作为一个不同的视图)。同时,我想在两个视图中使用相同的变量,并使它们在两个视图中更新。就像基本的全局变量一样。有办法做到吗?
我看过一个关于@State、@ObservableObject和@EnvironmentObject的过时视频。剧透:我不明白。我希望你能帮助我。如果你需要任何细节,请随时:)山姆
2条答案
按热度按时间zzwlnbp81#
我会推荐:一个名为
UserSettings
的ObservableObject
。然后,您可以从应用场景中或使用.environmentObject(UserSettings(...))
时@main所在的位置将其注入整个应用。对于需要访问
UserSettings
示例的视图,应执行以下操作:示例
环境对象:
x一个一个一个一个x一个一个二个x
意见:
一个三个三个一个
结果:
关于使用环境对象的完整演示,请参阅我的答案here以及相关的repo。
kzipqqlq2#
这篇文章帮助我https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-environmentobject-to-share-data-between-views
我们的可观察对象类:
期望在环境中找到GameSettings对象并显示其分数的视图:
创建GameSettings对象并将其放入导航堆栈环境中的视图: