1

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しかし、ビューに渡す変数だけでなく、を使用する方法がわかりません。

どんな助けでも大歓迎です。

編集:アクティビティタイプを追加

4

1 に答える 1