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にパラメーターを渡す「正しい」方法はありますか?
私の問題もなんとか解決し、ビューにあるトグルがあり、トリガーされませんでした。トグルのバインディング変数を、私の(ビュー)モデルである監視対象オブジェクトに移動し、そこから公開されたプロパティを公開しました。アンディとヒ素の情報を使用しています。