web-dev-qa-db-ja.com

SwiftUIビュープロパティwillSetおよびdidSetプロパティオブザーバーが機能しない

ViewModelがアタッチされたSwiftUI(ベータ5)ビューがあります。 NavigationLinkを介してそこに移動し、単純なパラメーター(この場合はFSACと呼ばれます)を渡したい

を使用してナビゲートします

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

ビューには、willSetおよびdidSetプロパティオブザーバーを含むFSACプロパティがあります。

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)")
    }
}

}

印刷ステートメントが呼び出されることはありません。最初のテキストボックスには、パラメーターが正しく表示されます。 2番目は空白です。

プロパティオブザーバーを起動させるにはどうすればよいですか?

より一般的には、navigationLinkを使用して、ViewModelを持つViewにパラメーターを渡す「正しい」方法はありますか?

5
Andy Thomas

私の問題もなんとか解決し、ビューにあるトグルがあり、トリガーされませんでした。トグルのバインディング変数を、私の(ビュー)モデルである監視対象オブジェクトに移動し、そこから公開されたプロパティを公開しました。アンディとヒ素の情報を使用しています。

0
Darko