我有一个EnvironmentObject
用来生成列表的
class ActivityViewModel: ObservableObject {
@Published var Activities = [Activity]()
init() {
self.Activities = ActivityService.fetchActivities()
}
}
struct Activity: Codable {
var Id: UUID
var Name: String
var Records: [Record]
init(Name:String) {
self.Id = UUID.init()
self.Name = Name
self.Records = [Record]()
}
}
当我在视图中使用它时,我可以使用 aForEach
来访问Activities
数组中的每个值。
我的问题是当我使用 NavigationLink 将其传递Activity
给另一个视图时,它不是使用EnvironmentObject
我的“父视图”代码:
ForEach(0..<activities.Activities.count, id: \.self) { activity in
HStack {
ActivityListItemView(activity: self.activities.Activities[activity])
}
}
我的孩子查看代码:
struct ActivityListItemView: View {
let activity: Activity
var body: some View {
NavigationLink(destination: ActivityDetail(Activity: activity)) {
HStack {
VStack {
HStack {
Text(activity.Name)
Text("\(activity.Records.count) records")
}
}
Text(">")
}
}
.buttonStyle(PlainButtonStyle())
}
}
如果我随后更新 viewModel,我需要将其复制到子视图中。但我不知道如何让它使用EnvironmentObject
, 而不仅仅是我传递给视图的变量。
任何帮助,将不胜感激。
编辑:添加活动类型