0

以下の (簡略化された) コードに似たアプリ アーキテクチャがあります。WorkoutManager StateObject設定ビューで初期化するを使用し、を介してその子に渡しEnvironmentObjectます。問題は、新しいワークアウトを連続して開始できるようにするために必要.sheetな新しい を初期化するライフサイクル イベントがないことです。WorkoutManager以下の例WorkoutViewでは、WorkoutManager を再初期化してクリーンなオブジェクトにする機能をどのように与えることができますか?

import SwiftUI
import HealthKit

class WorkoutManager: ObservableObject {
    
    var workout: HKWorkout?
}

struct ContentView: View {
    
    @StateObject var workoutManager = WorkoutManager()
    
    @State var showingWorkoutView = false
    
    var body: some View {
      
        Button {
            showingWorkoutView.toggle()
        } label: {
            Text("Start Workout")
        }
        .sheet(isPresented: $showingWorkoutView) {
            WorkoutView(showingWorkoutView: $showingWorkoutView)
        }
        
    }
}

struct WorkoutView: View {
    
    @EnvironmentObject var workoutManager:  WorkoutManager
    @Binding var showingWorkoutView: Bool
    
    var body: some View {
        Text("Workout Started")
            .padding()
        Button {
            showingWorkoutView.toggle()
            //Here I want to initialize a new WorkoutManager to clear out the previous workout's state, how? 
        } label: {
            Text("End Workout")
        }

    }
}
4

1 に答える 1