SwiftUI 是苹果公司推出的一款全新的 UI 框架,用于构建 iOS、iPadOS、macOS 和 watchOS 应用。在这个教程中,我们将学习如何使用 SwiftUI 创建一个简单的 Todo 应用。

创建 Todo 列表

首先,我们需要创建一个 Todo 列表。每个 Todo 项将包含一个标题和一个是否完成的标记。

struct TodoItem: Identifiable {
    let id = UUID()
    var title: String
    var isCompleted: Bool
}

添加 Todo 项

接下来,我们将添加一个表单,让用户可以输入新的 Todo 项。

struct ContentView: View {
    @State private var newTodo = ""
    @State private var todos = [TodoItem]()

    var body: some View {
        NavigationView {
            List {
                ForEach(todos) { todo in
                    HStack {
                        Text(todo.title)
                        Spacer()
                        Button(action: {
                            todo.isCompleted.toggle()
                        }) {
                            Image(systemName: todo.isCompleted ? "checkmark.circle.fill" : "circle")
                        }
                    }
                }
                .onDelete(perform: deleteTodo)
            }
            .navigationBarTitle("Todo List", displayMode: .inline)
            .navigationBarItems(trailing: Button(action: {
                todos.append(TodoItem(title: newTodo, isCompleted: false))
                newTodo = ""
            }) {
                Image(systemName: "plus")
            })
            .textField($newTodo)
            .padding()
        }
    }

    func deleteTodo(at offsets: IndexSet) {
        todos.remove(atOffsets: offsets)
    }
}

完成与未完成状态

我们使用 isCompleted 属性来跟踪每个 Todo 项的完成状态。当用户点击复选框时,isCompleted 的值将切换。

扩展阅读

想要了解更多关于 SwiftUI 的知识?请访问我们的 SwiftUI 教程 页面。

<center><img src="https://cloud-image.ullrai.com/q/todo_app/" alt="Todo App"/></center>