SwiftUI视图onReceive方法接收“冗余”事件的解决

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI视图onReceive方法接收“冗余”事件的解决相关的知识,希望对你有一定的参考价值。

概述

大家知道,SwiftUI为我们提供了方便的onReceive修改器方法,来接收外部发布器发送的事件。

但有些情况,我们需要屏蔽一些无关的“冗余”事件。

比如,SwiftUI中的Picker绑定的值对应的发布器,总会在Picker创建时发送一次事件,这是我们不想要的:

如上所示,Picker视图可由用户按需创建,但每次其创建时都会发送一次绑定属性的变更事件。

如何避免接收到这个“无用”的事件呢?

其实,只需代码上一个小小的修改,我们即可完美修复这个问题!

Let’s go!


源代码重现

于此相关的源代码如下:

@objc(BSUToday)
public 

以上是关于SwiftUI视图onReceive方法接收“冗余”事件的解决的主要内容,如果未能解决你的问题,请参考以下文章

当 ObservedObject 更改时,在 SwiftUI 视图中未调用 onReceive

SwiftUI 视图中的 onReceive 导致无限循环

如何在 onReceive 计时器关闭 SwiftUI iOS 中导航另一个视图

SwiftUI 接收自定义事件

SwiftUI - 文本字段返回键事件

SwiftUI onReceive 不适用于 UIPasteboard 发布者