正如标题所示,我试图通过父视图(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到目前为止我尝试过的所有内容都会返回。childViewBparentViewchildViewA
为了尝试将值传递给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()
}
}
}