如何解决SwiftUI:如何在不同的视图中显示UserDefault数据
当前,我有一个bool“心脏”按钮,供用户点击并将更改后的值保存到UserDefault数据库中
struct RootView: View {
@Observedobject var userSettings = UserSettings()
var body: some View {
Button(action: { self.userSettings.isVisited.toggle() }) {
if self.userSettings.isVisited {
Image(systemName: "heart.fill").font(.title)
} else {
Image(systemName: "heart").font(.title)
}
}.foregroundColor(.red)
}
}
现在,我想在另一个视图中显示“心脏”更改后的值。我将如何实现? 预先谢谢你!
解决方法
如果您的UserSettings
直接在UserDefaults
中存储/观察者设置,那么在另一个视图中,您可以仅使用UserSettings
的另一个实例
例如:
struct AnotherView: View {
@ObservedObject var userSettings = UserSettings()
var body: some View {
VStack {
if self.userSettings.isVisited {
Image(systemName: "heart.fill").font(.title)
} else {
Image(systemName: "heart").font(.title)
}
}
}
}
否则,您应该将UserSettings
的单个实例存储在顶级位置(场景,应用程序等),并将该单个实例作为环境对象注入到两个(所有)视图中
struct RootView: View {
@EnvironmentObject var userSettings: UserSettings
...
struct AnotherView: View {
@EnvironmentObject var userSettings: UserSettings
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。