web-dev-qa-db-fra.com

SwiftUI View Property Les observateurs de propriétés willSet et didSet ne fonctionnent pas

J'ai une vue SwiftUI (Beta 5) avec un ViewModel attaché. Je veux y accéder via un lien de navigation et passer un paramètre simple (appelé FSAC dans ce cas)

Je navigue en utilisant

NavigationLink("Next", destination: MyTestView(FSAC: "testFsac"))

La vue a une propriété FSAC avec observateur de propriété willSet et didSet

struct MyTestView: View {
    @ObservedObject var vm = MyTestViewModel()

var FSAC: String {
    willSet {
        print("will set fsac")
    }
    didSet {
        print("did set fsac")
        vm.FSAC = FSAC
    }
}

var body: some View {
    VStack {
        Text("FSAC: \(FSAC)")
        Text("VM FSAC: \(vm.FSAC)")
    }
}

}

Les instructions d'impression ne sont jamais appelées. La première zone de texte affiche correctement le paramètre; le second est vide.

Comment puis-je faire tirer les observateurs immobiliers?

Plus généralement, existe-t-il une façon "correcte" d'utiliser un lien de navigation pour passer des paramètres à une vue qui a un ViewModel?

5
Andy Thomas

Réussi à résoudre mon problème, j'ai eu une bascule qui était dans la vue et n'a pas été déclenchée. Déplacement de la variable de liaison pour basculer vers l'objet observé qui est mon modèle (afficher) et exposer la propriété publiée à partir de là. Utilisation des informations d'Andy et d'Arsenius.

0
Darko