[RC]3주차 개념 - UITableView
4064 단어 Rising campRising camp
<질문 1> TableView는 사용이유?
<질문 2> TableView의 구성요소?
<질문 3> TableView의 구현방법?
[사용이유]
1. 데이터의 가변성에 대응하기 위해서이다.
반대로 데이터의 수가 고정적인 상황일 때는 ScrollView를 사용한다.
2. 데이터의 수가 몇개일지 모르는 상황일 때
3. 기획자가 가변적일 때를 대응하기 위해서이다.
(버튼이 3개에서 4개로 늘어날 때) -> 따라서 앱을 만들 때 기획자에게 변경 가능성이 있는지 물어보면서 앱을 만들자.
TableView를 만든다면 ?
-> Dynamic StackView + ScrollView
앱을 만들때는 추천하는 순서
Model을 먼저 만들고 UI를 만들어라!

[구성요소]
1. UI -> Cell을 구성
func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath) -> UITableViewCell {
}
2. cell의 갯수
func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
}
[UITableView관련 메서드]
UITableViewDelegate
- 테이블뷰 델리게이트 객체는 UITableViewDelegate 프로토콜을 채택
- 델리게이트는 테이블뷰의 시각적인 부분 수정, 행의 선택 관리, 액세서리뷰 지원 그리고 테이블뷰의 개별 행 편집을 도움
- MVC(Model-View-Controller) 디자인 패턴 중, Controller와 관련
- 필수로 구현해야 하는 메서드는 없음
// 지정된 행이 선택되었음을 알리는 메서드
func tableView(UITableView, didSelectRowAt: IndexPath)
// 지정된 행의 선택이 해제되었음을 알리는 메서드
func tableView(UITableView, didDeselectRowAt: IndexPath)
// 특정 위치 행의 높이를 묻는 메서드
func tableView(UITableView, heightForRowAt: IndexPath)
// 특정 위치 행의 들여쓰기 수준을 묻는 메서드
func tableView(UITableView, indentationLevelForRowAt: IndexPath)
// 특정 섹션의 헤더뷰 또는 푸터뷰를 요청하는 메서드
func tableView(UITableView, viewForHeaderInSection: Int)
func tableView(UITableView, viewForFooterInSection: Int)
// 특정 섹션의 헤더뷰 또는 푸터뷰의 높이를 물어보는 메서드
func tableView(UITableView, heightForHeaderInSection: Int)
func tableView(UITableView, heightForFooterInSection: Int)
// 테이블뷰가 편집모드에 들어갔음을 알리는 메서드
func tableView(UITableView, willBeginEditingRowAt: IndexPath)
// 테이블뷰가 편집모드에서 빠져나왔음을 알리는 메서드
func tableView(UITableView, didEndEditingRowAt: IndexPath?)
UITableViewDataSource
- 테이블뷰 데이터 소스 객체는 UITableViewDataSource 프로토콜을 채택
- 데이터 소스는 테이블 뷰를 생성하고 수정하는데 필요한 정보를 테이블뷰 객체에 제공
- 데이터 소스는 데이터 모델의 델리게이트로, 테이블뷰의 시각적 모양에 대한 최소한의 정보를 제공
- MVC(Model-View-Controller) 디자인 패턴 중, Model과 관련
- UITableView 객체에 섹션의 수와 행의 수를 알려주며, 행의 삽입, 삭제 및 재정렬하는 기능을 선택적으로 구현
@required // 테이블 뷰를 만들기 위해서 반드시 필요한 메서드
// 특정 위치에 표시할 셀을 요청하는 메서드
func tableView(UITableView, cellForRowAt: IndexPath)
// 각 섹션에 표시할 행의 개수를 묻는 메서드
func tableView(UITableView, numberOfRowsInSection: Int)
@optional
// 테이블뷰의 총 섹션 개수를 묻는 메서드
func numberOfSections(in: UITableView)
// 특정 섹션의 헤더 혹은 푸터 타이틀을 묻는 메서드
func tableView(UITableView, titleForHeaderInSection: Int)
func tableView(UITableView, titleForFooterInSection: Int)
// 특정 위치의 행을 삭제 또는 추가 요청하는 메서드
func tableView(UITableView, commit: UITableViewCellEditingStyle, forRowAt: IndexPath)
// 특정 위치의 행이 편집 가능한지 묻는 메서드
func tableView(UITableView, canEditRowAt: IndexPath)
// 특정 위치의 행을 재정렬 할 수 있는지 묻는 메서드
func tableView(UITableView, canMoveRowAt: IndexPath)
// 특정 위치의 행을 다른 위치로 옮기는 메서드
func tableView(UITableView, moveRowAt: IndexPath, to: IndexPath)
Delegate - DataSource의 관계

[구현방법]
[참고]
Author And Source
이 문제에 관하여([RC]3주차 개념 - UITableView), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rlawnstn01023/RC3주차-개념-UITableView저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)