TableView 알아보기2
Tableview API
테이블뷰 자체는 UITableView
클래스의 인스턴스이다.UITableViewController
는 테이블뷰를 관리하고 선택 관리, 행 편집, 테이블 구성 등과 같은 많은 지원을 추가한다.
이 추가 지원은 테이블 기반 인터페이스를 만들고 초기화하기 위해 작성하는 코드의 양을 최소화하기 위한 것이다.
이 클래스를 직접 사용하지 않고 UITableViewController
의 하위 클래스를 정의하여 사용자 정의 behavior를 추가한다.
DataSource & Delegate UITableView
객체는 DataSource
와 Delegate
를 갖는다.MVC(Model-View-Controller)
패턴에 따라 dataSource는 앱의 데이터 모델과 tableview 사이를 중개한다.delegate
는 tableview의 모양과 동작을 관리한다.
dataSource는
UITableViewDataSource
protocol을 채택한다.UITableViewDataSource
는 두개의 필수 메소드가 있다.tableView:numberOfRowsInSection:
이 메소드는 하나의 섹션에 몇개의 row를 표시할 지 알려준다.tableView:cellForRowAtIndexPath:
이 메소드는 각 행을 표시할 셀을 제공한다.
그 외의 선택적 메소드를 사용하여 여러 섹션을 제공하거나, Header/Footer를 제공하며 테이블뷰의 추가, 제거 및 순서 변경을 할 수 있도록 돕는다.
delegate는
UITableViewDelegate
protocol을 채택한다.
이 프로토콜에는 필수로 override할 메소드가 없다.
NSIndexPath 클래스의 확장
많은 테이블뷰 메소드는 인덱스 경로를 메소드 매개 변수 또는 리턴 값으로 사용한다.
인덱스 경로는 중첩 배열 트리에서 특정 노드에 대한 경로를 식별하며 Foundation
프레임워크에서는 NSIndexPath
객체로 표현한다.
TableView Cell
위에서 봤듯이 데이터 소스는 테이블뷰가 표시하는 각 행에 대해 셀 객체를 리턴한다.
이런 셀 객체는 UITableViewCell
클래스에서 상속한다.UITableViewCell
클래스에 의해 정의된 4가지 style을 사용하거나 custom하여 cell을 구성할 수 있다.
'Programming > iOS' 카테고리의 다른 글
[iOS/Swift3.0] cocoapods 버전 확인하기 (0) | 2018.06.20 |
---|---|
[Xcode] Localizable.strings 파일 에러 찾기 (0) | 2018.06.05 |
[iOS.Swift3.0] UITableView 알아보기 - 기본 (0) | 2018.06.01 |
[iOS/Swift3.0] Navigation Controller와 Modal에서의 화면 전환 차이 (0) | 2018.05.22 |
[iOS/Swift3.0] IBAction: Target-Action 알아보기 (0) | 2018.05.15 |