// Model
struct Todo: Identifiable {
let id = UUID()
var text: String
}
// ViewModel
class TodoViewModel: ObservableObject {
@Published var todos: [Todo] = []
@Published var newTodoText = ""
func addTodo() {
let newTodo = Todo(text: newTodoText)
todos.append(newTodo)
newTodoText = ""
}
}
// View
struct TodoView: View {
@StateObject var viewModel = TodoViewModel()
var body: some View {
VStack {
TextField("Enter todo", text: $viewModel.newTodoText)
Button("Add Todo") {
viewModel.addTodo()
}
List(viewModel.todos) { todo in
Text(todo.text)
}
}
}
}