I am pretty nw to SwiftUI, and to make my code more readable, I usually break my views into smaller views.
Let's say I have a viewModel, what is the best way to call a method of my viewModel from a nested view? Right now I am passing around my ViewModel as a parameter of every nested view, but I don't find it very optimal and clean...
Is there a way to notify MyMainView that the button of HeaderSubview was tapped ? Can I use Combine for example?
ViewModel
class MyViewModel {
func fetchSomeData() {
print("Fetching Some Data")
}
}
MainView
struct MyMainView: View {
var myViewModel = MyViewModel()
var body: some View {
HeaderView(viewModel: myViewModel)
}
}
struct HeaderView: View {
var viewModel: MyViewModel
var body: some View {
HeaderSubview(viewModel: viewModel)
}
}
struct HeaderSubview: View {
var viewModel: MyViewModel
var body: some View {
Button("Search") {
// I want to call my View Model method here
viewModel.fetchSomeData()
}
}
}