正如标题所示,我试图通过父视图(P)将数据从一个子视图(A)传递到另一个子视图(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()
}
}
}