通常、変数の更新を監視するためにdidSet
in Swiftを使用できます。ただし、@Binding
変数では機能しませんでした。たとえば、次のコード:
@Binding var text {
didSet {
......
}
}
しかし、didSet
が呼び出されることはありません。ありがとう。
@Binding
のdidSet
オブザーバーは必要ありません。
didSet
が変更されたときに表示用に何か他のものを計算したいのでtext
が必要な場合は、それを計算するだけです。たとえば、text
の文字数を表示する場合:
struct ContentView: View {
@Binding var text: String
var count: Int { text.count }
var body: some View {
VStack {
Text(text)
Text(“count: \(count)”)
}
}
}
データモデルに他の変更を加えたいためにtext
を監視する場合、View
からの変更を監視することは間違っています。 View
からではなく、モデル内の別の場所、またはコントローラーオブジェクト内の変更を監視する必要があります。 View
はvalueタイプであり、参照タイプではないことに注意してください。 SwiftUIは必要なときにそれを作成し、その複数のコピーを保存するか、まったくコピーを保存しない場合があります。