A basic example of reactive View-ViewModel binding (MVVM Architecture) in SwiftUI using ObservableObject, @ObservedObject and @Published
Basic steps:
- Ensure that your View Model class conforms to
ObservableObject
class ViewModel: ObservableObject {...}- Ensure that the bindable property in your View Model class is marked as
@Published
class ViewModel: ObservableObject {
@Published var model: Model = ...
}- Ensure that the
viewModelinstance is marked as@ObservedObject
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()
var body: some View {
...
}
}- Finally, use the property to set up the bind between the View and View Model
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()
var body: some View {
Text("\(viewModel.model.property)")
}
}