swift - 检查多个@Published 值

标签 swift combine observableobject

我有 3 节课:

class ClassOne: ObservableObject {
    @Published var loading: Bool = false
}

class ClassTwo: ObservableObject {
    @Published var loading: Bool = false
}

class ClassThree: ObservableObject {
    @Published var loading: Bool = false
}

在 SwiftUI View 中,当所有 loading 变量均为 true 时,我需要执行某些操作

当然,这是我的文件的简化版本:每个类的加载 var 通过下载方法设置 true 或 false。 我只需要检查所有下载是否已完成并删除加载 View 。

struct MainScreen3: View {
    @State private var cancellables = Set<AnyCancellable>()
    @EnvironmentObject var classOne: ClassOne
    @EnvironmentObject var classTwo: ClassTwo
    @EnvironmentObject var classThree: ClassThree
    
    @State private var loading: Bool = true
    
    var body: some View {
        VStack {
            if loading {
                Text("Please wait...")
            } else {
                Text("Done!")
            }
            
        }.onAppear {
            self.classOne.fetchFromServer()
            self.classTwo.fetchFromServer()
            self.classThree.fetchFromServer()
        }
    }
}

有什么建议吗?

最佳答案

您可以使用计算属性。

private var loading: Bool {
   (self.classOne.loading || self.classTwo.loading || self.classThree.loading)
}

关于swift - 检查多个@Published 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67472990/

相关文章:

ios - 具有 CurrentValueSubject 绑定(bind)的 TextField 上的 "Binding<String> action tried to update multiple times per frame"

SwiftUI ObservableObject 在发布值时不会更新

swift - 显示来自 Firebase 的用户信息

ios - 如何将一个 Storyboard中的导航 Controller 连接到另一个 Storyboard中的 View Controller ?

swift - 'Publishers.Once' 的替代方案是什么?

SwiftUI/Combine - 订阅单个发布者的最新值

SwiftUI:将 ObservableObject 的属性传递到另一个类的初始值设定项中

ios - 通过另一个 ObObject 传递 ObservableObject 模型?

ios - 如何使用 touchIDAuthenticationAllowableReuseDuration

ios - imagePickerController 在 Xcode 6.3 中损坏