別の管理Treatment
対象オブジェクト と 1 対多の関係にある管理対象オブジェクト がありますTreatmentTime
。
で指定された にTreatmentTime
関連付けられたさまざまなオブジェクトを提示しています。 の追加と削除をアニメーション化できるようにしたいと考えています。私はたくさんのことを試しましたが、どれもうまくいきませんでした。Treatment
ForEach
TreatmentTime
/// 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())
}
}
アドバイスをいただければ幸いです。さらに、私のコードに関して他に改善できる点があれば、ぜひお知らせください。