import SwiftUI struct Task: Identifiable { let id = UUID() var title: String var isCompleted: Bool = false } struct ContentView: View { @State private var tasks: [Task] = [] @State private var newTaskTitle: String = "" var body: some View { NavigationView { VStack { HStack { TextField("New Task", text: $newTaskTitle) .textFieldStyle(RoundedBorderTextFieldStyle()) Button(action: addTask) { Image(systemName: "plus") .padding() .background(Color.blue) .foregroundColor(.white) .clipShape(Circle()) } .disabled(newTaskTitle.trimmingCharacters(in: .whitespaces).isEmpty) } .padding() List { ForEach(tasks) { task in HStack { Image(systemName: task.isCompleted ? "checkmark.circle.fill" : "circle") .onTapGesture { toggleTask(task) } Text(task.title) .strikethrough(task.isCompleted) } } .onDelete(perform: deleteTask) } } .navigationTitle("To-Do List") } } private func addTask() { let trimmedTitle = newTaskTitle.trimmingCharacters(in: .whitespaces) guard !trimmedTitle.isEmpty else { return } let newTask = Task(title: trimmedTitle) tasks.append(newTask) newTaskTitle = "" } private func toggleTask(_ task: Task) { if let index = tasks.firstIndex(where: { $0.id == task.id }) { tasks[index].isCompleted.toggle() } } private func deleteTask(at offsets: IndexSet) { tasks.remove(atOffsets: offsets) } } #Preview { ContentView() }