タイトルが示すように、ある子ビュー (A) から親ビュー (P) を介して別の子ビュー (B) にデータを渡そうとしています。
親ビューは次のようになります。
@State var rectFrame: CGRect = .zero
var body: some View {
childViewA(rectFrame: $rectFrame)
childViewB()
}
どこで必要な をchildViewA
取得CGRect
しchildViewB
ます。
childViewA
次のようになります。
@Binding var rectFrame: CGRect
var body: some View {
// Very long code where rectFrame is obtained and printed to console correctly
}
rectFrame
に渡すにはどうすればよいchildViewB
ですか? との両方に正しい値を出力しているにもかかわらず、これまでに試したことはすべて に返さCGRect.zero
れます。childViewB
parentView
childViewA
に値を渡そうとするために、次のようchildViewB
に書き直しました。parentView
@State var rectFrame: CGRect = .zero
var body: some View {
childViewA(rectFrame: $rectFrame)
childViewB(rectFrame: $rectFrame.value)
}
childViewB
次の構造を持つ:
var rectFrame: CGRect = CGRect.zero
var body: some View {
}
しかし、それはCGRect.zero
毎回印刷されます。
最近試し@ObjectBinding
てみましたが、苦労したので、誰かがこの特定の例で私を助けてくれたら、とても感謝しています.
class SourceRectBindings: BindableObject {
let willChange = PassthroughSubject<Void, Never>()
var sourceRect: CGRect = .zero {
willSet {
willChange.send()
}
}
}