SwiiftUI的基础使用我们在《SwiftUI实战之用Picker做个优雅的菜单》中进行了详细介绍,阅读过这篇文章的朋友,肯定应该掌握了Picker的基础用法
本文价值与收获
看完本文后,您将能够作出下面的界面
但是问题来了,我们该如何响应Picker的Callback?
提出这个问题,则证明您一定是个iOS老鸟,有一定的项目经验。不过我要给您个建议了,在SwiftUI我们就要用SwiftUI的思路去思考问题。
在SwiftUI世界里,一切都是数据驱动的。我们要顺应SwiftUI机制,而不是去破坏他。
不过,上面但需求肯定也是真实存在的。我们该如何解决呢?
解决方案
在编程世界,我们遇到90%的问题通常都是对API不熟悉造成的。大白话就是书读的太少。
下面我们再复习一下《SwiftUI 基础之@State @Binding @ObservedObject @EnvironmentObject区别》中对他们的介绍:
@State和@ObservableObject之间有一些细微的差异。这些都是很重要的,因为它们都有不同的用途。首先,@State在视图本地。值或数据在视图中本地保存。它由框架管理,由于它存储在本地,因此它是一个值类型。但是@ObservableObject在视图外部,并且不存储在视图中。它是一种引用类型,因为它不在本地存储,而只是具有对该值的引用。这不是由框架自动管理的,而是开发人员的责任。这最适用于外部数据,例如数据库或由代码管理的模型。
@Binding也在视图内,但是与@State区别在于@Binding用于不通视图之间的参数传递。@Binding 和@ObservedObbjecg一样都是传递引用。
@EnvironmentObject 可以理解为全局变量
具体细微差别,大家可以访问demo页面体验用途的不同。
看懂上面的文字,我们就是知道解决方案了。这个问题用@ObservableObject就可以非常好的解决了。