UITableView

Groot·2022년 6월 27일
0

TIL

목록 보기
23/148
post-thumbnail

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)
      • 사용자가 지정된 행에 대한 세부 정보 버튼을 탭했음을 대리자에게 알립니다.
profile
I Am Groot

0개의 댓글