swift
import SwiftUI
struct ContentView: View {
@State private var items: [TodoItem] = []
@State private var newItemText = ""
var body: some View {
NavigationStack {
List {
ForEach(items) { item in
HStack {
Image(systemName: item.isDone ? "checkmark.circle.fill" : "circle")
.foregroundColor(item.isDone ? .green : .gray)
.onTapGesture { toggleItem(item) }
Text(item.title)
.strikethrough(item.isDone)
.foregroundColor(item.isDone ? .secondary : .primary)
}
}
.onDelete(perform: deleteItems)
}
.navigationTitle("Tasks")
.toolbar {
ToolbarItem(placement: .bottomBar) {
HStack {
TextField("New task...", text: $newItemText)
.textFieldStyle(.roundedBorder)
Button("Add") { addItem() }
.disabled(newItemText.isEmpty)
}
}
}
}
}
private func addItem() {
items.append(TodoItem(title: newItemText))
newItemText = ""
}
private func toggleItem(_ item: TodoItem) {
if let index = items.firstIndex(where: { $0.id == item.id }) {
items[index].isDone.toggle()
}
}
private func deleteItems(at offsets: IndexSet) {
items.remove(atOffsets: offsets)
}
}
struct TodoItem: Identifiable {
let id = UUID()
var title: String
var isDone = false
}