SwiftUI 使用状态

所有应用程序都会更改状态。例如,用户可能点击了一个按钮以显示更多信息,他们可能已经在文本框中输入了一些文本,或者从日期选择器中选择了一个日期-涉及应用程序从一种状态转移到另一种状态的所有内容。

状态的问题在于它太乱了:更改时,我们需要发现更改并更新布局以匹配。乍一看听起来很简单,但是随着我们状态的增长和发展,它变得越来越难–很容易忘记更新一件事情,或者弄错了更新顺序,从而使用户界面的状态与预期的不匹配。

SwiftUI 通过从控件中删除状态来解决此问题。当我们在视图中添加属性时,它们实际上是惰性的-当s然,它们具有值,但是更改它们并没有任何作用。但是,如果在它们之前添加了特殊的 @State 属性,SwiftUI 将自动监视更改并更新使用该状态的视图的任何部分。

当涉及到某种状态时(例如,在切换开关更改时告诉state属性发生变化),我们不能直接引用该属性。这是因为 Swift 认为我们只想立即读取该值,而不是说“请随着情况的变化也更新此值”。幸运的是,SwiftUI 的解决方案是在属性名称前放置一个美元符号,这使我们可以引用基础数据绑定而不是其当前值。我知道这乍一看有点令人困惑,但是在一两个小时后,它就变成了第二天性。

请记住,SwiftUI是声明性的,这意味着我们预先将所有可能状态的所有布局都告诉了它,并让它弄清楚了当属性更改时如何在它们之间移动。我们称之为绑定–要求 SwiftUI 同步 UI 控件和基础属性之间的更改。

如果您习惯了更强制性的编程风格,那么与州政府合作会首先让您头疼。但是请相信我-完成后,您会一路顺风。