TIL
🌱 난 오늘 무엇을 공부했을까?
📌 TableView 공식문서 읽기
- 테이블 뷰는 행과 섹션으로 분할된 세로 스크롤 콘텐츠의 단일 열을 표시합니다.
- 테이블의 각 행에는 앱과 관련된 단일 정보가 표시됩니다.
- 섹션을 사용하면 관련 행을 함께 그룹화할 수 있습니다.
📍 TableView는 다양한 개체 간의 공동 작업
- Cells
- 콘텐츠에 대한 시각적 표현을 제공합니다.
- UIKit에서 제공하는 기본 셀을 사용하거나 앱의 요구 사항에 맞게 사용자 지정 셀을 정의할 수 있습니다.
- Table view controller
- UITableViewController 개체를 사용하여 table view를 관리합니다.
- 다른 뷰 컨트롤러도 사용할 수 있지만 일부 테이블 관련 기능이 작동하려면 테이블 뷰 컨트롤러가 필요합니다.
- data source object
- 이 개체는 UITableViewDataSource 프로토콜을 채택하고 테이블에 데이터를 제공합니다.
- delegate object
- 이 개체는 UITableViewDelegate 프로토콜을 채택하고 테이블의 내용에 대해 사용자 상호 작용을 관리합니다.
📍 Table View Controller
- 테이블 뷰 컨트롤러 생성
init(style: UITableView.Style)
- 주어진 스타일의 테이블 뷰를 관리하기 위해 테이블 뷰 컨트롤러를 초기화합니다.
init?(coder: NSCoder)
init(nibName: String?, bundle: Bundle?)
- 테이블 뷰 가져오기
var tableView: UITableView!
- 컨트롤러 객체가 관리하는 테이블 뷰를 반환합니다.
- 테이블 동작 구성
var clearsSelectionOnViewWillAppear: Bool
- 테이블이 나타날 때 컨트롤러가 선택을 지울지 여부를 나타내는 부울 값입니다.
- 테이블 뷰 새로 고침
var refreshControl: UIRefreshControl?
- 테이블 내용을 업데이트하는 데 사용되는 새로 고침 컨트롤입니다.
📍 Table View DataSource
- 행 및 섹션 수 제공
func tableView(UITableView, numberOfRowsInSection: Int) -> Int
- 테이블 뷰의 지정된 섹션에 있는 행 수를 반환하도록 데이터 소스에 지시합니다.(필수)
func numberOfSections(in: UITableView) -> Int
- 데이터 소스에 테이블 뷰의 섹션 수를 반환하도록 요청합니다.
- 셀, 머리글 및 바닥글 제공
func tableView(UITableView, cellForRowAt: IndexPath) -> UITableViewCell
- 테이블 뷰의 특정 위치에 삽입할 셀에 대한 데이터 소스를 요청합니다.(필수)
func tableView(UITableView, titleForHeaderInSection: Int) -> String?
- 테이블 뷰의 지정된 섹션 헤더 제목에 대한 데이터 소스를 요청합니다.
func tableView(UITableView, titleForFooterInSection: Int) -> String?
- 테이블 뷰의 지정된 섹션 바닥글 제목에 대한 데이터 소스를 요청합니다.
- 테이블 행 삽입 또는 삭제
func tableView(UITableView, commit: UITableViewCell.EditingStyle, forRowAt: IndexPath)
- 수신기에서 지정된 행의 삽입 또는 삭제를 커밋하도록 데이터 소스에 요청합니다.
func tableView(UITableView, canEditRowAt: IndexPath) -> Bool
- 데이터 소스에 지정된 행이 편집 가능한지 확인하도록 요청합니다.
- 테이블 행 재정렬
func tableView(UITableView, canMoveRowAt: IndexPath) -> Bool
- 주어진 행을 테이블 뷰의 다른 위치로 이동할 수 있는지 여부를 데이터 소스에 묻습니다.
func tableView(UITableView, moveRowAt: IndexPath, to: IndexPath)
- 테이블 뷰의 특정 위치에 있는 행을 다른 위치로 이동하도록 데이터 소스에 지시합니다.
- 인덱스 구성
func sectionIndexTitles(for: UITableView) -> [String]?
- 테이블 뷰의 섹션에 대한 제목을 반환하도록 데이터 소스에 요청합니다.
func tableView(UITableView, sectionForSectionIndexTitle: String, at: Int) -> Int
- 주어진 제목과 섹션 제목 인덱스가 있는 섹션의 인덱스를 반환하도록 데이터 소스에 요청합니다.
📍 Table View Delegate - 이번 프로젝트에서 사용?
- 행 선택에 응답
func tableView(UITableView, willSelectRowAt: IndexPath) -> IndexPath?
func tableView(UITableView, didSelectRowAt: IndexPath)
func tableView(UITableView, willDeselectRowAt: IndexPath) -> IndexPath?
- 지정된 행이 선택 취소될 것임을 대리자에게 알립니다.
func tableView(UITableView, didDeselectRowAt: IndexPath)
- 지정된 행이 이제 선택 해제되었음을 대리자에게 알립니다.
func tableView(UITableView, shouldBeginMultipleSelectionInteractionAt: IndexPath) -> Bool
- 사용자가 두 손가락 이동 제스처를 사용하여 테이블 뷰에서 여러 항목을 선택할 수 있는지 여부를 대리자에게 묻습니다.
func tableView(UITableView, didBeginMultipleSelectionInteractionAt: IndexPath)
- 사용자가 테이블 뷰에서 여러 행을 선택하기 위해 두 손가락 이동 제스처를 사용하기 시작할 때 대리자에게 알립니다.
func tableViewDidEndMultipleSelectionInteraction(UITableView)
- 사용자가 테이블 뷰에서 여러 행을 선택하기 위해 두 손가락 이동 제스처를 사용하는 것을 중지할 때 대리자에게 알립니다.
- 사용자 정의 머리글 및 바닥글 보기 제공
func tableView(UITableView, viewForHeaderInSection: Int) -> UIView?
- 테이블 뷰의 지정된 섹션 헤더에 표시할 보기를 대리자에게 요청합니다.
func tableView(UITableView, viewForFooterInSection: Int) -> UIView?
- 테이블 뷰의 지정된 섹션 바닥글에 표시할 보기를 대리자에게 요청합니다.
func tableView(UITableView, willDisplayHeaderView: UIView, forSection: Int)
- 테이블이 지정된 섹션에 대한 헤더 보기를 표시하려고 함을 대리자에게 알립니다.
func tableView(UITableView, willDisplayFooterView: UIView, forSection: Int)
- 테이블에 지정된 섹션에 대한 바닥글 보기가 표시될 것임을 대리자에게 알립니다.
- 머리글, 바닥글 및 행 높이 제공
func tableView(UITableView, heightForRowAt: IndexPath) -> CGFloat
- 지정된 위치의 행에 사용할 높이를 대리자에게 요청합니다.
func tableView(UITableView, heightForHeaderInSection: Int) -> CGFloat
- 특정 섹션의 헤더에 사용할 높이를 대리자에게 요청합니다.
func tableView(UITableView, heightForFooterInSection: Int) -> CGFloat
- 특정 섹션의 바닥글에 사용할 높이를 대리자에게 요청합니다.
class let automaticDimension: CGFloat
- 테이블 내용의 높이 추정
func tableView(UITableView, estimatedHeightForRowAt: IndexPath) -> CGFloat
- 지정된 위치에 있는 행의 예상 높이를 대리자에게 요청합니다.
func tableView(UITableView, estimatedHeightForHeaderInSection: Int) -> CGFloat
- 특정 섹션 헤더의 예상 높이를 대리인에게 요청합니다.
func tableView(UITableView, estimatedHeightForFooterInSection: Int) -> CGFloat
- 특정 섹션 바닥글의 예상 높이를 대리자에게 요청합니다.
- 액세서리 보기 관리
func tableView(UITableView, accessoryButtonTappedForRowWith: IndexPath)
- 사용자가 지정된 행에 대한 세부 정보 버튼을 탭했음을 대리자에게 알립니다.