본문 바로가기
iOS

[iOS][SwiftUI] 메모장 만들기

by teamnova 2023. 5. 7.

안녕하세요.

오늘은 SwiftUI를 이용하여 간단한 메모장을 만들어보도록 하겠습니다.

 

1. 모델 생성

메모장 앱에서는 메모의 제목과 내용이 필요합니다. 이를 저ㅏ장할 수 있는 모델을 생성합니다.

struct Memo: Identifiable {
    let id = UUID()
    var title: String
    var content: String
}

2. 리스트 뷰 생성

메모 리스트를 표시할 뷰를 생성합니다. 이 뷰에서는 'List'와 'ForEach'를 사용하여 메모 리스트를 표시합니다.

struct MemoListView: View {
    @State var memos: [Memo] = []
    
    var body: some View {
        NavigationView {
            List {
                ForEach(memos) { memo in
                    NavigationLink(destination: MemoDetailView(memo: memo)) {
                        VStack(alignment: .leading) {
                            Text(memo.title)
                                .font(.headline)
                            Text(memo.content)
                                .font(.subheadline)
                                .foregroundColor(.gray)
                        }
                    }
                }
            }
            .navigationTitle("Memo")
            .navigationBarItems(trailing:
                NavigationLink(destination: MemoEditView(memos: $memos)) {
                    Image(systemName: "plus")
                }
            )
        }
    }
}

3. 상세 뷰 생성

메모의 상세 정보를 표시하는 뷰를 생성합니다. 이 뷰에서는 'TextEditor'를 사용하여 메모의 제목과 내용을 표시하고 수정할 수 있습니다.

struct MemoDetailView: View {
    @State var memo: Memo
    
    var body: some View {
        VStack {
            TextEditor(text: $memo.title)
                .font(.headline)
                .padding(.vertical, 8)
            Divider()
            TextEditor(text: $memo.content)
                .font(.subheadline)
        }
        .padding()
    }
}

 

4. 추가/수정 뷰 생성

새로운 메모를 추가하거나 메모를 수정할 때 사용하는 뷰를 생성합니다. 이 뷰에서는 'TextField'와 'TextEditor'를 사용하여 메모의 제목과 내용을 입력할 수 있습니다.

struct MemoEditView: View {
    @Binding var memos: [Memo]
    @State var memo: Memo = Memo(title: "", content: "")
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        VStack {
            TextField("Title", text: $memo.title)
                .font(.headline)
                .padding(.vertical, 8)
            Divider()
            TextEditor(text: $memo.content)
                .font(.subheadline)
        }
        .padding()
        .navigationBarTitle("New Memo")
        .navigationBarItems(trailing:
                   Button("Save") {
            memos.append(memo)
            presentationMode.wrappedValue.dismiss()
        }
        .disabled(memo.title.isEmpty || memo.content.isEmpty)
    	)
	}
}

 

6. 메모 앱 실행

이제 앱을 실행하면 메모 리스트를 볼 수 있습니다. 리스트에서 메모를 선택하면 해당 메모의 상세 정보를 볼 수 있고, 추가 버튼을 눌러 새로운 메모를 추가할 수 있습니다.

@main
struct MemoApp: App {
    var body: some Scene {
        WindowGroup {
            MemoListView()
        }
    }
}

 

이상으로 간단한 메모장 앱을 SwiftUI로 만드는 방법에 대해 설명해보았습니다. 더 다양한 기능을 추가하여 실용적인 앱으로 만들어 볼 수 있습니다. 따라서 여러 기능들을 학습해 가며 다양한 앱을 만들어보시길 권장합니다.

'iOS' 카테고리의 다른 글

[iOS][SwiftUI] 스톱워치 만들기  (0) 2023.06.19
[iOS][SwiftUI] Todo 만들기  (0) 2023.05.24
[iOS][Swift UI] 계산기 예제  (0) 2023.04.20
[iOS][Swift UI] List View 사용하기  (0) 2023.04.04
[iOS][Swift UI] iPages  (0) 2023.03.22