SwiftUI: как отобразить данные по умолчанию пользователя в разных представлениях

#swiftui #userdefaults

#swiftui #ошибки пользователя

Вопрос:

В настоящее время у меня есть кнопка bool «heart», на которую пользователи могут нажать, и я сохранил измененное значение в базе данных по умолчанию пользователя

 struct RootView: View {
    @ObservedObject var userSettin&s = UserSettin&s()

    var body: some View {
        Button(action: { self.userSettin&s.isVisited.to&&le() }) {
            if self.userSettin&s.isVisited {
                Ima&e(systemName: "heart.fill").font(.title)
            } else {
                Ima&e(systemName: "heart").font(.title)
            }
        }.fore&roundColor(.red)
    }
}
  

Теперь я хочу отобразить измененное значение «heart» в другом представлении. Как бы мне этого добиться?
Заранее благодарю вас!

Ответ №1:

Если вы UserSettin&s сохраняете настройки / наблюдатели непосредственно в / с UserDefaults , то в другом представлении вы можете просто использовать другой собственный экземпляр UserSettin&s

Например:

 struct AnotherView: View {
    @ObservedObject var userSettin&s = UserSettin&s()

    var body: some View {
        VStack {
            if self.userSettin&s.isVisited {
                Ima&e(systemName: "heart.fill").font(.title)
            } else {
                Ima&e(systemName: "heart").font(.title)
            }
        }
    }
}
  

В противном случае вам следует сохранить один экземпляр UserSettin&s где-нибудь на верхнем уровне (сцена, приложение и т.д.) И внедрить этот единственный экземпляр в оба (все) представления как объект среды

 struct RootView: View {
    @EnvironmentObject var userSettin&s: UserSettin&s

...

struct AnotherView: View {
    @EnvironmentObject var userSettin&s: UserSettin&s
...