memo app
✅ main layout
1️⃣ navigation controller
- navi : 실제로 표시되는 화면이 아니고 화면이동을 관리
- root view : 기본적으로 목록을 표시할 수 있도록 table view가 추가됨
- view : 버튼이나 이미지같은 control, 하나 이상의 view가 모여서 화면을 구성
- is initial View Controller : 드래그해서 시작화면을 바꿀 수도 있음
- navigation controller를 사용하면 화면 제목과 버튼이 자동으로 추가. 뒤로가기도 자동 추가
- 라지 타이틀 모드 : prefers large titles
✅ memo class
- Model group -> Model.swift
- 내용과 날짜 저장
✅ 메모 목록 구현
- 일단 배열에 임시적으로 저장
- table view : 하나의 데이터를 셀로 표현
- 프로토타입 셀 : 여기서 셀을 디자인
- 프로토타입 셀이 하나면 하나의 셀 디자인을 사용한다는 의미. 얼마든지 추가 가능
- Table View Cell : identifier에 적절한 값을 반드시 입력해야 함. 아니면 크래시 발생
- 테이블뷰가 데이터를 표시하도록
- ViewController class는 반드시 UIViewController class를 상속하거나, UIViewController class를 상속한 다른 클래스를 상속해야 함.
MemoListTableViewController
- 신과 클래스를 연결해줘야 함.
- numberOfRowsInSection : 더미데이터의 수를 리턴
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let target = Memo.dummyMemoList[indexPath.row]
cell.textLabel?.text = target.content
cell.detailTextLabel?.text = target.insertDate.description
return cell
}
✅ 테이블뷰 구현 이론
테이블 뷰 배치
테이블 뷰 컨트롤러를 사용함으로써 테이블 뷰 배치하는 부분이 자동으로 처리됨.
프로토타입 셀 디자인, 셀 아이덴티파이어 지정
- Style : Subtitle
- identifier : cell
데이터 소스, 델리게이트 연결
- 테이블 뷰 컨트롤러가 자동으로 처리해줌.
- 데이터 소스 : 표시해야 할 친구가 몇명인지, 어떤 디자인으로 표시해야 하는지, 어떤 데이터를 표시해야 하는지 알려줌
- UITableViewController를 상속하고 있음 -> UITableViewDataSource를 채택
- 테이블뷰는 항상 데이터 소스한테 물어봄
- 데이터 소스에 구현되어 있는 메소드를 호출해서 물어보는 것
데이터 소스 구현
델리게이트 구현
✅ 새 메모 쓰기
+ 버튼
- modal
- sheet : 화면이 순서대로 쌓여 있는 것처럼 표시됨
- segue : 신 사이 전환을 처리
- text field : 한 줄
- text view : 여러 줄
✅ 저장 구현
- Alert View : 화면 중간 구현
- Action Sheet : 화면 아래 구현, 3개 이상 옵션
- 노티피케이션 : 라디오 방송. 앱을 구성하는 모든 객체로 전달되는 브로드캐스트
✅ 메모 보기 화면
- Push : 오른쪽에서 왼쪽으로 슬라이드 돼서 표시됨
- Pop : 왼쪽에서 오른쪽으로 슬라이드 돼서 표시됨