ios - 如何访问/修改子视图中的父视图变量?
问题描述
我有包含多个子视图的父视图容器。
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
对象,在所有地方反映该值,包括其他子视图和父容器视图?
解决方案
这实际上是一个相当复杂的话题。如果 Person 是一个引用对象,您可以让您的子视图监视 Person 的更改。但是,这并不是真正遵循最佳实践。
现代设计正在转向 UDF(单向数据流),其中您有一个值对象来描述您的 UI 的当前状态,并且当它发生变化时它会被传递。使用 UDF,孩子不会更改 person 对象 - 相反,他们会创建一个包含更改的新的、不可变的 person 对象,并通知订阅者有一个更新的 person 对象。孩子们将观察 Person 对象的变化。
具体细节取决于您如何实施您的应用程序。
推荐阅读
- django - Django Query - 返回在模型中至少被引用一次的所有对象
- node.js - 如何实际卸载 node-gyp
- javascript - 为什么即使我已将数字转换回字符串,我也不能将数字推送到我的字符串数组中?
- python - 编辑包在jupyter中不生效
- redis - Redis 管道忽略重定向
- python - 使用 AWS CDK 部署 lambda 函数时如何在存储库中使用来自第三方 python 类的代码
- javascript - GetStream 在不同的提要中创建相同的活动
- javascript - Tooltip 传单的动态永久属性
- karate - karate-config.js 中的 callSingle() 用法
- reactjs - 如何让具有来自 Netlify 的域名的反应应用程序与弹性 beanstalk spring boot 后端连接