SwiftUI View не реагирует на изменение значения наблюдаемого объекта - PullRequest
0 голосов
/ 03 мая 2020

У меня странная ситуация, когда представление не обновляется, меняя значение @Published var на Observable Object. Цель состоит в том, чтобы обновить логическое значение, чтобы программно перейти к другому представлению после того, как пользователь вошел в систему. Поэтому после завершения проверки подлинности и проверки я обновляю значение, но представление не изменяется. Вместо этого обновление переменной в начале процесса аутентификации приводит к изменению представления.

Observable Object

class SomeModel: ObservableObject {
  @Published var pushNewView: Bool = false


  // the view reacts to the value changes correctly if I update the value here
  func updateValue() {
    self.pushNewView = true
  }


  // the view doesn't change if I update the value here
  func updateFromClosure() {

     someFunctionWithClosure { (document, error) in 

      do {
        try // another function is callled here

        if someCondition {
          // ..
        else {
          // Here I can see both prints with correct values
          DispatchQueue.main.async {
            self.pushNewView = true
            print(self.pushNewView, "BOOL IS CHANGED!")
            print("entered!!!!!!!!")
          }

        }

     } catch let error {
       // ...
     }
  }

}

Так что в обоих приведенных выше примерах Значение @Published var обновляется корректно, но представление будет реагировать только в первом случае.

Просмотр


struct LoginView: View {

    @ObservedObject var someModel = SomeModel()

    var body: some View {
        NavigationView {
            VStack {

               Text("SomeText")

               NavigationLink(destination: TestView(), isActive: $someModel.pushNewView) { EmptyView() }

      }
   }
}

Итак, есть идеи относительно того, почему это происходит?

...