S SmartDocs
シリーズ: iOS App swift 52 行 · 更新日 2026-06-25

AddItemView.swift

iOS_App/To-Do-List-Demo/To-Do-List-Demo/AddItemView.swift

//
//  AddItemView.swift
//  To-Do-List-Demo
//
//  Created by Nelson Lai on 2026/6/25.
//

import SwiftUI

struct AddItemView: View {
    @Environment(\.dismiss) private var dismiss

    @State private var subject = ""
    @State private var itemDescription = ""

    let onSave: (String, String) -> Void

    var body: some View {
        NavigationStack {
            Form {
                Section("Subject") {
                    TextField("Enter subject", text: $subject)
                }
                Section("Description") {
                    TextField("Enter description", text: $itemDescription, axis: .vertical)
                        .lineLimit(3...6)
                }
            }
            .navigationTitle("New To-Do")
            .navigationBarTitleDisplayMode(.inline)
            .toolbar {
                ToolbarItem(placement: .cancellationAction) {
                    Button("Cancel") {
                        dismiss()
                    }
                }
                ToolbarItem(placement: .confirmationAction) {
                    Button("Save") {
                        onSave(subject.trimmingCharacters(in: .whitespacesAndNewlines),
                               itemDescription.trimmingCharacters(in: .whitespacesAndNewlines))
                        dismiss()
                    }
                    .disabled(subject.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty)
                }
            }
        }
    }
}

#Preview {
    AddItemView { _, _ in }
}

関連記事