iOS/UMC
[iOS] 4-5주 차 미션
year.number
2022. 10. 31. 23:13
4주 차 미션
✅ TableView를 이용하여 메모장 구현하기

먼저 필요한 ViewController 파일을 생성해준다.


TableView DataSource와 Delegate 프로토콜을 채택하여 필요한 코드를 작성해준다.
UITableViewDelegate
- 테이블 뷰에서 section의 header, footer를 관리하고 셀을 삭제하거나 위치를 바꾸고 그 외의 다른 작업을 수행하기 위한 메서드를 제공한다
- 테이블뷰의 시각적인 부분을 수정해주고, 테이블 뷰의 개별 행 편집 등을 도와주는 역할을 한다
UITableViewDataSource
- 테이블 뷰의 셀에 사용되는 데이터를 관리하기 위한 메서드를 제공한다
- 테이블뷰를 생성하고 수정하는데 필요한 정보를 테이블뷰 객체에 제공하는 역할을 한다
// Create new note
@IBAction func didTapNewNote() {
guard let vc = storyboard?.instantiateViewController(identifier: "new") as? EntryViewController else {return}
vc.title = "New Note"
vc.navigationItem.largeTitleDisplayMode = .never
vc.completion = {noteTitle, note in
self.models.append((title: noteTitle, note: note))
self.navigationController?.popViewController(animated: true)
self.label.isHidden = true
self.table.isHidden = false
self.table.reloadData()
}
navigationController?.pushViewController(vc, animated: true)
}
새로운 메모를 작성할 때 필요한 코드를 구현한다
✨ EntryViewController 코드
//
// EntryViewController.swift
// Week4-project
//
// Created by yeonsu on 2022/11/02.
//
import UIKit
class EntryViewController: UIViewController {
@IBOutlet var titleField: UITextField!
@IBOutlet var noteField: UITextView!
public var completion: ((String, String) -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
titleField.becomeFirstResponder()
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Save", style: .done, target: self, action: #selector(didTapSave))
}
@objc func didTapSave() {
if let text = titleField.text, !text.isEmpty, !noteField.text.isEmpty {
completion?(text, noteField.text)
}
}
}
let model = models[indexPath.row]
// Show note controller
guard let vc = storyboard?.instantiateViewController(identifier: "note") as? NoteViewController else { return }
vc.navigationItem.largeTitleDisplayMode = .never
vc.title = "Note"
vc.noteTitle = model.title
vc.note = model.note
navigationController?.pushViewController(vc, animated: true)
}
작성한 메모를 확인할 때 필요한 코드를 구현한다.
✨ NoteViewController 코드
//
// NoteViewController.swift
// Week4-project
//
// Created by yeonsu on 2022/11/02.
//
import UIKit
class NoteViewController: UIViewController {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var noteLabel: UITextView!
public var noteTitle: String = ""
public var note: String = ""
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.text = noteTitle
noteLabel.text = note
}
}

Cell을 왼쪽으로 슬라이드하면 나타나는 delete 버튼을 구현하는 코드이다.


5주 차 미션은 어플리케이션을 실행할 때 나타나는 로딩 애니메이션을 Lottie로 구현했다!