【发布时间】: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。此外,trackerDataStore与var和class的拼写完全相同,但var的类型不同。 Apple SwiftUI 教程是熟悉流程的好方法developer.apple.com/tutorials/swiftui/handling-user-input
标签: ios swift swiftui publisher environmentobject