Swiftui 在容器视图中共享公共变量
场景:Swiftui 在容器视图中共享公共变量,swiftui,Swiftui,场景: 我有一个大视图,我想将其分解为一个容器视图,其中包含两个子视图。 因此每个视图都有自己的.string文件。 范例:将过程从一个文件作为“集体”传播给儿童 容器视图将充当中心,即智能。 我不希望这过于复杂;只需将逻辑模块化为分立部件,便于维护。 问题:我只能在结构视图之间进行单向@State-->@绑定,而不能通过类对象 是否有返回值的方法;e、 例如,双向数据交换? 也就是说,子视图与父视图/容器共享其公共视图? View1 | View2 &
我有一个大视图,我想将其分解为一个容器视图,其中包含两个子视图。
因此每个视图都有自己的.string文件。 范例:将过程从一个文件作为“集体”传播给儿童 容器视图将充当中心,即智能。 我不希望这过于复杂;只需将逻辑模块化为分立部件,便于维护。 问题:我只能在结构视图之间进行单向@State-->@绑定,而不能通过类对象
是否有返回值的方法;e、 例如,双向数据交换?
也就是说,子视图与父视图/容器共享其公共视图?
View1 | View2 & View2 | View1 <br/>
@State -->@Binding (data) & @Binding <-- @State (result)?
View1 | View2&View2 | View1
@状态-->@Binding(data)&@BindingBinding是值从子对象“返回”到父对象的方式。如果子级没有更新该值(即,只需单向父级->子级
),则不需要绑定-只需在init中传递变量即可
无论哪个子级更改了数字,子级和父级都将显示相同的数字
但是,有时孩子可能需要通知家长,而不一定通过值更改。然后您可以使用回调:
struct Child: View {
var onClick: (Int) -> Void
var body: some View {
Button("generate random") {
onClick(Int.random(1...100))
}
}
}
struct Parent: View {
var body: some View {
Child {
print("new random", $0)
}
}
}
看看这是否对您有帮助:。绑定是子级返回值的方式。要从子级调用父级,通常需要使用回调,也可以使用绑定值。。。我刚换了。当然应该是Child(num:$sharedNum)
我刚刚发现自己;但我的评论在更改之前就超时了。非常感谢!
struct Child: View {
var onClick: (Int) -> Void
var body: some View {
Button("generate random") {
onClick(Int.random(1...100))
}
}
}
struct Parent: View {
var body: some View {
Child {
print("new random", $0)
}
}
}