Изменение свойства моего экземпляра ObservableObject не обновляет View. Код: - PullRequest
0 голосов
/ 03 марта 2020

// в ContentView.swift:

struct ContentView: View {

@EnvironmentObject var app_state_instance : AppState //this is set to a default of false.

var body: some View {

if self.app_state_instance.complete == true {

Image("AppIcon")

}}

public class AppState : ObservableObject {

    @Published var inProgress: Bool = false
    @Published var complete : Bool = false 

public static var app_state_instance: AppState? //I init this instance in SceneDelegate & reference it throughout the app via AppState.app_state_instance

...

}

в AnotherFile.swift:

AppState.app_state_instance?.complete = true

в SceneDelegate.swift:

app_state_instance = AppState( UserDefaults.standard.string(forKey: "username"), UserDefaults.standard.string(forKey: "password") )

AppState.app_state_instance = app_state_instance

window.rootViewController = UIHostingController(rootView: contentView.environmentObject(app_state_instance!))

Это ^ делает Я не знаю, почему?

Кроме того, можно ли сделать публикацию c var @ опубликованной?

Кроме того, я немного новичок в классе на основе + структура-как-значения парадигма, если у вас есть какие-либо советы по улучшению этого, пожалуйста, поделитесь.

Я рассмотрел вопрос об использовании структурной ссылки 'inout' ContentView для обновления структурного состояния из других файлов (так как выполнение app_state_instance не работает с этим кодом).

...