【问题标题】:SwiftUI Environment Object Not Getting UpdatedSwiftUI 环境对象未更新
【发布时间】:2020-10-25 19:46:52
【问题描述】:

我认为是这样的情况,指定为环境对象的类中的@Published 属性会自动更新到我将环境对象传递给的所有子视图,但是下面的代码没有更新,我做错了什么?

class trackerDataStore: ObservableObject {
    
    let healthStore = HKHealthStore()
    
    @Published var isLoadingWorkouts = false
    @Published var subscriptionIsActive = false
    @Published var trackerWorkoutObject: trackerWorkoutObject?
    
}
    

struct detailHeaderCard: View {
    
    @EnvironmentObject var trackerDataStore: TrackerDataStore
    
    var body: some View {
        //omitted
    }
    .sheet(isPresented: $isShowingPlayerAddStatsFormAsModal) {
        PlayerAddStatsForm(isShowingPlayerAddStatsFormAsModal: $isShowingPlayerAddStatsFormAsModal)
            .environmentObject(trackerDataStore)
    }
    
}
   
 
struct PlayerAddStatsForm: View {
    
    @EnvironmentObject var trackerDataStore: TrackerDataStore
    //not getting reactively updated here

}

【问题讨论】:

  • 缺少很多代码才能重现此问题,但是如何在detailHeaderCard 中初始化@EnvironmentObject@EnvironmentObject 的父级应该是 @ObservableObject@StateObject。此外,trackerDataStorevarclass 的拼写完全相同,但 var 的类型不同。 Apple SwiftUI 教程是熟悉流程的好方法developer.apple.com/tutorials/swiftui/handling-user-input

标签: ios swift swiftui publisher environmentobject


【解决方案1】:

我发现我连接@EnvironmentObject 的方式实际上运行良好,我在另一个区域的代码中有一个错误,阻止视图接收我正在寻找的数据,这让我认为它与@EnvironmentObject 无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-26
    • 2019-10-23
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多