故事 这周,我的同事问了我一个问题:在 SwiftUI 中怎么观察用户对 Picker 的选择行为? 这是一个来自真实业务的问题,所以我觉得值得我花费时间去解决它。 范例代码如下所示,然后我的同事想观察用户对 Picker 候选项的选择行为。 分析 但是,「观察」本身的意义可能会随着上下文变动而变动: 它可以表示用户在 Picker 上放下手指的那一刻。 它可以表示用户在 Picker 上抬起手指的那一刻。 它可以表示 Picker 对 $selection 进行值变更的那一刻。 上述每一项都将导致不同的最终解决方案。 因为 SwiftUI 控件可以使用 style…
前言 苹果在 WWDC 2019 向开发者介绍了 SwiftUI。多数人也许会将 SwiftUI 看成又一个如 Flutter 或者 React.js 又或者 Vue.js 这样踩在声明式、无状态 UI 编程潮流浪尖的 UI 框架。虽然 SwiftUI 与上述框架有着非常多的共同点,但是 SwiftUI 从设计到实现上都与上述框架有着本质的不同。 实际上,相较于是一个编程框架,SwiftUI 更加像是一种编程语言。不相信?让我来看看一个用「原生」SwiftUI 代码编写的斐波那契数列计算程序。 然后通过添加以下两行代码,我们可以在 Swift Playground…
介绍 最近,我的一位同事试图将引用语义模型用 ObservableObject 和 @StateObject 迁移到 SwiftUI。由于网上有很多关于用这种方式来迁移引用语义模型到 SwiftUI 的例子,在这篇文章中我不打算重点讨论这种方法的一般情况,而是想重点讨论在我和我的同事寻找答案使其代码正常工作的过程中发现的更有价值的三个话题。这些话题是: 在 SwiftUI 中真相源 (Source of Truth) 是什么? 在 SwiftUI…