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]()
}
}
これをビューで使用すると、 a を使用して配列ForEach
内の各値にアクセスできます。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
しかし、ビューに渡す変数だけでなく、を使用する方法がわかりません。
どんな助けでも大歓迎です。
編集:アクティビティタイプを追加