在容器视图中共享公共变量

弗雷德里克·李

场景:
我有一个大的视图,我想分解为一个包含几个子视图的容器视图。
因此,每个视图都有其自己的.string文件。范例:将过程从一个文件传播到孩子们,作为“集体”。

容器视图将充当中心,情报。

我不希望这过于复杂。仅将逻辑模块化在离散零件中,易于维护。

问题:我只能在结构视图之间进行单向 @State ---> @Binding,而无需通过类对象。
有没有办法返回值?例如双向数据交换?
也就是说,子视图是否与父/容器共享其共同的视图?

 View1  |  View2          &   View2     |   View1 <br/>
@State -->@Binding (data) & @Binding <-- @State (result)?

我必须使用某种单例类对象进行数据交换吗?

同样,我是为了简化设计而不是大型单个结构视图。

新开发者

绑定将值从子级“返回”到父级的方式。如果孩子没有更新值(即,仅一种方式)parent -> child,则不需要绑定-只需在init中传递变量即可。

struct Child: View {
   @Binding var num: Int
   var body: some View {
      VStack {
         Text("\(num)")
         Button("increase") { self.num += 1 }
      }
   }
}

struct Parent: View {
   @State var sharedNum: Int = 0
   var body: some View {
      VStack {
         Text("\(sharedNum)")
         Child(num: $sharedNum)
         Child(num: $sharedNum)
      }
      .onChange(of: sharedNum) { print("shared num", $0) } // iOS14 required
   }
}

无论哪个孩子更改了它,孩子和父母都将显示相同的数字。


但是,有时孩子可能不一定需要通过更改值来通知父母。然后,您可以使用回调:

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)
      }
   }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

禁用MVC中共享视图中的链接

来自分类Dev

Puppet:如何在模块中共享公共资源/变量

来自分类Dev

在不同的视图中共享ViewModel时,ModelState失败

来自分类Dev

Laravel在视图中共享表单中的值

来自分类Dev

Swift:在共享容器视图中更新标签

来自分类Dev

.NET MVC 4:如何设置在不同控制器的多个视图中共享的部分视图

来自分类Dev

如何在laravel视图中共享来自其他控制器的数据?

来自分类Dev

如何在所有Laravel视图中共享经过身份验证的用户

来自分类Dev

如何在两个或多个视图中共享单个Viewmodel?

来自分类Dev

如何在自定义列表视图中共享外部图像?

来自分类Dev

在角度指令中共享变量

来自分类Dev

Jenkins:在MultiJob中共享变量

来自分类Dev

Julia在脚本中共享变量

来自分类Dev

Python:在Plotly的子图中共享图例

来自分类Dev

Backbone.View:交换两个在父视图中共享一个元素的子视图

来自分类Dev

Backbone.View:交换两个在父视图中共享一个元素的子视图

来自分类Dev

clearcase:Windows中共享的动态视图

来自分类Dev

UIPageController中共享视图的UIView动画

来自分类Dev

容器视图中的 UIPageViewController

来自分类Dev

在整个包中共享全局变量

来自分类Dev

javascript 对象中共享变量的最佳实践

来自分类Dev

在ember-cli插件中共享公共树

来自分类Dev

在UINavigationController层次结构中共享公共背景图像?

来自分类Dev

在UINavigationController层次结构中共享公共背景图像?

来自分类Dev

在Plotly.js中的多个子图中共享跟踪

来自分类Dev

如何在 Kubernetes 中共享每个容器的卷?

来自分类Dev

在 MTA XSA 应用程序中共享 HDI 容器

来自分类Dev

在容器视图中交换子视图

来自分类Dev

如何在Web会话中共享静态变量

Related 相关文章

  1. 1

    禁用MVC中共享视图中的链接

  2. 2

    Puppet:如何在模块中共享公共资源/变量

  3. 3

    在不同的视图中共享ViewModel时,ModelState失败

  4. 4

    Laravel在视图中共享表单中的值

  5. 5

    Swift:在共享容器视图中更新标签

  6. 6

    .NET MVC 4:如何设置在不同控制器的多个视图中共享的部分视图

  7. 7

    如何在laravel视图中共享来自其他控制器的数据?

  8. 8

    如何在所有Laravel视图中共享经过身份验证的用户

  9. 9

    如何在两个或多个视图中共享单个Viewmodel?

  10. 10

    如何在自定义列表视图中共享外部图像?

  11. 11

    在角度指令中共享变量

  12. 12

    Jenkins:在MultiJob中共享变量

  13. 13

    Julia在脚本中共享变量

  14. 14

    Python:在Plotly的子图中共享图例

  15. 15

    Backbone.View:交换两个在父视图中共享一个元素的子视图

  16. 16

    Backbone.View:交换两个在父视图中共享一个元素的子视图

  17. 17

    clearcase:Windows中共享的动态视图

  18. 18

    UIPageController中共享视图的UIView动画

  19. 19

    容器视图中的 UIPageViewController

  20. 20

    在整个包中共享全局变量

  21. 21

    javascript 对象中共享变量的最佳实践

  22. 22

    在ember-cli插件中共享公共树

  23. 23

    在UINavigationController层次结构中共享公共背景图像?

  24. 24

    在UINavigationController层次结构中共享公共背景图像?

  25. 25

    在Plotly.js中的多个子图中共享跟踪

  26. 26

    如何在 Kubernetes 中共享每个容器的卷?

  27. 27

    在 MTA XSA 应用程序中共享 HDI 容器

  28. 28

    在容器视图中交换子视图

  29. 29

    如何在Web会话中共享静态变量

热门标签

归档