【发布时间】:2022-01-22 00:48:24
【问题描述】:
我在 SwiftUI 中使用 @EnvironmentObject 时遇到了一个问题。我在一个单独的文件中创建了一个 ObservableObject update。现在,我将其称为来自 2 个不同视图(视图 1 和视图 2)的 @EnvironmentObject。当 update 值更改时,我必须在 View1 和 View2 中执行某些任务。所以我在 View1 和 View2 中都使用了 .onReceive() 。 现在,当 update 值发生变化时,我希望 View1 中的 .onReceive 函数应该在 View2 中的 .onReceive 函数之前调用。那么有人可以建议我该怎么做吗?
【问题讨论】:
-
在没有任何代码或不了解您的应用程序的情况下很难说出您在做什么,但据我所知,
onReceive将大部分同时完成。如果onReceive确实适合您的应用程序,那么您可以尝试延迟您在第二个onReceive中所做的事情,例如将内容包装在DispatchQueue.main.asyncAfter(deadline: .now() + 1) {...}中。 -
@workingdog 简单地添加 DispatchQueue.main.async 对我有用。谢谢!