I had done and read all most every post that I could find about this behavior :
No ObservableObject of type BaseViewModel found. A View.environmentObject(_:) for BaseViewModel may be missing as an ancestor of this view
However, I still not be able to get it done. I think the way I use "@EnvironmentObject var vm : BaseViewModel" in ContentView is wrong. But when I tried "@EnvironmentObject var vm = BaseViewModel()", the BaseViewModel() will ask for the payer so it will be BaseViewModel(payer: ). Here is my code
struct Payer: Identifiable {
var id = UUID().uuidString
var name : String
var offset : CGFloat = 0
}
and In my ViewModel file,
class BaseViewModel: ObservableObject {
//* The problem * //
@Published var payer: Payer
//* The problem * //
@Published var payers = [
Payer( name: "AA"),
Payer( name: "BB"),
Payer( name: "CC"),
]
init(payer: Payer) {
self.payer = payer
}
}
lastly in my ContentView
struct ContentView: View {
@EnvironmentObject var vm : BaseViewModel
var body: some View {
BaseView()
.environmentObject(self.vm)
}
}