Let's try to make a MVVM based SwiftUI feature that has a Toggle
element.
We'll make our Model, View and ViewModel. To make our ViewModel easily replaceable for DI we'll define it in our View as a protocol.
Let's start, create a new SwiftUI Project and you should have your ContentView as this
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Ok, let's create a new file and call it ContentViewViewModel
that will look like this
import Foundation
struct ContentViewViewModel {
}
Let's get back to our View and add a reference to our ViewModel
private let viewModel = ContentViewViewModel()
Our view will look like:
import SwiftUI
struct ContentView: View {
private let viewModel = ContentViewViewModel()
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Top comments (0)