如何将 EnvironmentObject 从视图共享到其视图模型?

时间:2021-07-23 20:03:19

标签: ios swift mvvm swiftui environmentobject

我正在使用 DataStore environmentObject 在我的应用程序周围传递数据,但是我现在需要为视图创建特定的视图模型类,但我需要能够传递我的 dataStore 到我的 WorkoutDetailViewModel 的实例,但无法想出一种方法来做到这一点。我尝试将它作为参数传递给 WorkoutDetailViewModel,但编译器抱怨 Cannot use instance member 'dataStore' within property initializer; property initializers run before 'self' is available。我还能怎么做?

struct NewWorkoutDetailView: View {
    
   @EnvironmentObject var dataStore: DataStore
   
    
   @StateObject var workoutDetailViewModel = WorkoutDetailViewModel(dataStore: dataStore)
    
    
    var body: some View {

    }

 }


final class WorkoutDetailViewModel: ObservableObject {

    var dataStore: DataStore
    
    @Published var fullyLoadedWorkout: TrackerWorkout?
    @Published var notes: String = ""
    @Published var workoutImage = UIImage()
    @Published var workoutLocation: String = ""
    
    
    public func editWorkout() {
       dataStore.loadWorkouts() 
    }

 }

0 个答案:

没有答案