iOS 개발일지
0719 새싹 12회차 정리 본문
iOS 앱 개발자 데뷔 과정 12회차
#0. Memo
- enum과 CaseIterable
enum을 선언할 때 CaseIterable이라는 프로토콜을 채택하면, enum을 프로토콜/배열처럼 활용할 수 있게 된다.
이 특성을 잘 활용하면 코드가 매우 간결해진다!
이런 식으로, cellForRowAt 외에도 numberOfSections, numberOfRowsInSection, titleForHeaderInSection 등 여러 메서드 내에서 활용이 가능하다.
- 여러 개의 스토리보드를 연결하기 (feat. Storyboard Reference)
Intro라는 이름의 스토리보드를 만들어서 흩어져있는 스토리보드들을 모아 스토리보드 레퍼런스로 탭바와 연결시켰다.
여기서 탭바와 함께 네비게이션 바도 쓰고 싶다면 각각의 스토리보드에 추가해야할까? Intro에 추가해야할까?
둘 다 가능하지만, Intro에서 추가한 컨트롤러는 바 버튼 아이템의 수정이 불가능하다.
따라서 네비게이션과 탭, 둘 중 한쪽은 코드로 구현해야 하는데 NavigationBar 쪽을 코드로 짜는게 조금 더 편하다고 한다.
- Extension
기존의 클래스, 구조체, 열거형 타입에 프로퍼티, 메소드, 이니셜라이저 등을 추가하여 확장해서 사용할 수 있다.
우선 Swift 파일을 만들고, UIKit을 import 한다. 파일명은 "Extension 할 UI객체+Extension"으로 짓는다.
view처럼 내부적으로 아웃렛 연결이 자동으로 되어있는 경우가 아니라면, self를 통해 extension할 객체에 접근할 수 있다.
위에서는 VC를 Extension하여 뷰의 백그라운드 컬러를 변경하는 메서드와, 매개변수를 통해 알럿을 보여줄 수 있는 메서드를 추가했다.
이렇게 하면 파일마다 같은 코드를 작성하지 않고, 일괄적인 변경이 가능하다는 장점이 있다.
- Custom TableViewCell
커스텀으로 셀 안에 여러 뷰 객체들을 넣고, 그 객체들을 코드에서 사용하고 싶으면 어떻게 해야 할까?
여태까지 해왔던대로 TableViewController Class 안에 넣으면 될 것 같지만, 이 셀 안의 객체들은 말 그대로 셀 안에 있기 때문에 CoCoa Touch Class로 TableViewCell 파일을 만들어서 따로 아웃렛 변수를 선언해줘야 한다.
유의할 점 : 헤더나 푸터쪽에 추가한 뷰 객체는 셀 밖에 있기 때문에 Cell이 아닌 TableView 쪽에 선언해야 한다.
보통 한 개의 화면에는 한 개의 파일을 매칭시키지만, 이렇게 예외도 존재한다.
그리고 cellForRowAt 메서드 안에서 타입 캐스팅을 해줘야 한다.
아직 자세하게 배우지는 않았지만, 이 식별자를 가진 셀이 BucketlistTableViewCell과 같은 타입이야~ 정도로 이해해도 될 것 같다.
- ReloadData : TableView 데이터에 변동이 생겼을 때, 사용자에게 보여주려면
텍스트필드에 문자를 입력하면 테이블리스트에 추가가 되는 간단한 프로젝트를 만들어 보았다.
위의 addend 코드만으로는, 사용자가 느끼기에 아무것도 달라지는 것이 없을 것이다.
View가 전달받는 데이터에 변동이 생겼다면 당연하게도, 데이터를 업데이트하는 코드를 작성해야 한다!
- TableViewCell 스와이프로 삭제하기
우선 canEditRowAt 메서드를 호출하고, true를 반환한다.
그리고 commit 메서드를 호출해서 editingStyle이 delete로 변했을 때 list에서 해당 cell을 remove하고, data를 reload한다.
우측에서 스와이프 했을 경우의 디폴트 기능을 사용한 것이며, 원하는 기능으로 커스텀 할 수 있는 메서드도 있다.
- 스크롤로 키보드 내리기
TableView는 ScrollView를 상속받기 때문에 제스쳐를 따로 추가하지 않아도,
Dismiss on drag를 선택하면 리스트를 드래그할 시 자동으로 키보드가 내려간다.
#1. Checklist
- TableViewReloadData
#0. Memo ReloadData : TableView 데이터에 변동이 생겼을 때, 사용자에게 보여주려면 참고
- TableViewCell Reuse mechanism
[0718 새싹 11회차 정리] #1. Checklist TableViewCell Reuse mechanism 참고
- Custom TableViewCell
#0. Memo Custom TableViewCell 참고
- Enum CaseIterable
#0. Memo enum과 CaseIterable 참고
- Extension
#0. Memo Extension 참고
#2. Assignment
- 과제1: 쇼핑 목록 리스트 만들기

- 과제2: 트렌드미디어 검색 화면 만들기


'SeSAC iOS 데뷔과정 2기' 카테고리의 다른 글
0721 새싹 14회차 정리 (0) | 2022.07.21 |
---|---|
0720 새싹 13회차 정리 (0) | 2022.07.20 |
0718 새싹 11회차 정리 (0) | 2022.07.18 |
0717 2주차 마무리 (0) | 2022.07.17 |
0715 새싹 10회차 정리 (0) | 2022.07.15 |