【发布时间】:2021-02-17 14:52:26
【问题描述】:
我有一个ObservableObject,它使用@Published 属性包装器发布一些值。该对象还包含一个计时器。
问题是,如何在计时器执行后立即触发事件并在 SwiftUI 的视图中处理该事件(我更喜欢使用 onReceive 之类的东西)?
使用组合框架来发布变化的值,我想正确地实现这个事件触发/处理。但是到目前为止,我所读到的关于 Combine 的所有内容都是关于处理值变化的。但就我而言,它只是一个简单的事件(没有任何值)。
我知道我可以简单地使用闭包并在计时器到期时调用它,如果没有更好的类似组合的解决方案,我会这样做。
这是一个非常简单的问题的概念性问题,所以我认为它可以自我解释,而无需我提出代码示例?
【问题讨论】:
-
这是否回答了您的问题stackoverflow.com/a/63239900/12299030?
-
谢谢,但不,一点也不。这只是在 swiftUI 中直接使用计时器。但在我的场景中,应该从我正在谈论的可观察对象实例中触发事件。计时器只是一个例子,也可能是其他原因。简而言之,我正在寻找一种方法来触发观察对象中的事件并在 swiftUI 中正确捕获/处理该事件。
-
您查看过“.onReceive”订阅者吗?这是一种 SwiftUI + 组合方法。
-
没错,这就是我在问题中提到它的原因。我想使用 onRecieve 来捕捉事件。但是我怎样才能从我观察到的对象中触发一个事件呢?这就是问题所在。
-
是否可以有一个由定时器触发的
Bool属性,然后在onReceive 中重置? (或增加一个 Int ?)感觉很hack-y,但可能有用吗?
标签: swift swiftui event-handling combine