SwiftUI实战之如何获取Picker数据修改事件

SwiiftUI的基础使用我们在《SwiftUI实战之用Picker做个优雅的菜单》中进行了详细介绍,阅读过这篇文章的朋友,肯定应该掌握了Picker的基础用法

本文价值与收获

看完本文后,您将能够作出下面的界面

Jietu20200305-193001@2x.jpg

但是问题来了,我们该如何响应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就可以非常好的解决了。

项目代码

还有 49% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥1.59 继续阅读

相关阅读更多精彩内容

友情链接更多精彩内容