0

別の管理Treatment対象オブジェクト と 1 対多の関係にある管理対象オブジェクト がありますTreatmentTime

で指定された にTreatmentTime関連付けられたさまざまなオブジェクトを提示しています。 の追加と削除をアニメーション化できるようにしたいと考えています。私はたくさんのことを試しましたが、どれもうまくいきませんでした。TreatmentForEachTreatmentTime

/// this is being presented within another view
struct TreatmentView_Manual: View {
    @ObservedObject var treatment: Treatment
    var body: some View {
        ForEach(Array(zip(Array(treatment.treatmentTimes as? Set ?? Set<TreatmentTime>()).sorted { $0.time ?? Date() < $1.time ?? Date() }, treatment.wrappedTreatmentTimes.indices)), id: \.0) { (treatmentTime, index) in
            Treatment_DatePicker(treatmentTime: treatmentTime, index: index)
        }
        HStack {
            Button("Add another") {
               addTreatment()
            }
            
            Spacer()
            
            if treatment.numberOfAdmins > 1 {
                Button("Remove last"){
                    removeTreatment()
                }.foregroundColor(.red)
            }
        }
    }
    func addTreatment() {
        treatment.addToTreatmentTimes(TreatmentTime(context: treatment.managedObjectContext!))
    }
    
    func removeTreatment(_ treatmentTime: TreatmentTime) {
        // function not yet written
    }
}

struct Treatment_DatePicker: View {
    @ObservedObject var treatmentTime: TreatmentTime
    let index: Int
    var body: some View {
        DatePicker("Dose #\(index + 1)", selection: $treatmentTime.time ?? Date())
    }
}

アドバイスをいただければ幸いです。さらに、私のコードに関して他に改善できる点があれば、ぜひお知らせください。

4

0 に答える 0