Programming/iOS

[iOS/Swift 3.0] UITableview 알아보기 - DataSource & Delegate

devssun 2018. 6. 1. 00:01
728x90
반응형

TableView 알아보기2

Tableview API

테이블뷰 자체는 UITableView클래스의 인스턴스이다.
UITableViewController는 테이블뷰를 관리하고 선택 관리, 행 편집, 테이블 구성 등과 같은 많은 지원을 추가한다.
이 추가 지원은 테이블 기반 인터페이스를 만들고 초기화하기 위해 작성하는 코드의 양을 최소화하기 위한 것이다.
이 클래스를 직접 사용하지 않고 UITableViewController의 하위 클래스를 정의하여 사용자 정의 behavior를 추가한다.


DataSource & Delegate
UITableView 객체는 DataSourceDelegate를 갖는다.
MVC(Model-View-Controller)패턴에 따라 dataSource는 앱의 데이터 모델과 tableview 사이를 중개한다.
delegate는 tableview의 모양과 동작을 관리한다.

  1. dataSource는 UITableViewDataSource protocol을 채택한다.
    UITableViewDataSource는 두개의 필수 메소드가 있다.

    • tableView:numberOfRowsInSection:
      이 메소드는 하나의 섹션에 몇개의 row를 표시할 지 알려준다.

    • tableView:cellForRowAtIndexPath:
      이 메소드는 각 행을 표시할 셀을 제공한다.

    그 외의 선택적 메소드를 사용하여 여러 섹션을 제공하거나, Header/Footer를 제공하며 테이블뷰의 추가, 제거 및 순서 변경을 할 수 있도록 돕는다.

  2. delegate는 UITableViewDelegate protocol을 채택한다.
    이 프로토콜에는 필수로 override할 메소드가 없다.

NSIndexPath 클래스의 확장
많은 테이블뷰 메소드는 인덱스 경로를 메소드 매개 변수 또는 리턴 값으로 사용한다.
인덱스 경로는 중첩 배열 트리에서 특정 노드에 대한 경로를 식별하며 Foundation 프레임워크에서는 NSIndexPath 객체로 표현한다.


TableView Cell
위에서 봤듯이 데이터 소스는 테이블뷰가 표시하는 각 행에 대해 셀 객체를 리턴한다.
이런 셀 객체는 UITableViewCell클래스에서 상속한다.
UITableViewCell 클래스에 의해 정의된 4가지 style을 사용하거나 custom하여 cell을 구성할 수 있다.

반응형