首页 > 解决方案 > 如何访问/修改子视图中的父视图变量?

问题描述

我有包含多个子视图的父视图容器。

struct Person {
  var name: String
  var lastname: String
}

class ParentContainer: UIView {
 var person = Person(name: "Vish", lastname: "Deshmukh")
 let child1 = ChildView1(person)
 let child2 = ChildView2(person)
 let child3 = ChildView3(person)
}

我应该如何确定是否有任何子更改person对象,在所有地方反映该值,包括其他子视图和父容器视图?

标签: iosswift

解决方案


这实际上是一个相当复杂的话题。如果 Person 是一个引用对象,您可以让您的子视图监视 Person 的更改。但是,这并不是真正遵循最佳实践。

现代设计正在转向 UDF(单向数据流),其中您有一个值对象来描述您的 UI 的当前状态,并且当它发生变化时它会被传递。使用 UDF,孩子不会更改 person 对象 - 相反,他们会创建一个包含更改的新的、不可变的 person 对象,并通知订阅者有一个更新的 person 对象。孩子们将观察 Person 对象的变化。

具体细节取决于您如何实施您的应用程序。


推荐阅读