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

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就可以非常好的解决了。

项目代码

你可能感兴趣的:(SwiftUI实战之如何获取Picker数据修改事件)