본문 바로가기

General/iOS

[iPhone] about TableView

동작방식

테이블 뷰가 자신에게 데이터를 공급할 책임이 있는 데이터 소스 오브젝트를 찾는다.
테이블 뷰는 있는데 데이터 소스가 없다면 테이블 뷰에는 아무것도 뿌려줄 수 없다.


데이터 소스를 찾았다면, 제일 먼저 몇 개의 섹션을 준비해야 할지를 물어본다.
- (NSInteger)numberOfSectionInTableView:(UITableView *) TableView 


섹션의 개수가 정해졌다면 각 섹션별로 준비해야 할 로우(row)의 개수를 물어본다.

- (NSInteger)numberOfSectionInTableView:(UITableView *) TableView



섹션과 각 섹션 별 로우의 갯수가 완전히 정해졌다면 테이블 뷰의 크기가 결정된 것.
각 섹션의 로우별로 어떤 테이블 셀을 채워야 할지.
이때 데이터 소스 오브젝트는 아래 메소드를 통해 각 섹션 별 로우에 그러야 할 테이블 셀을 만들어서 리턴해 준다.

- (UITableViewCell *) tableView:(UITableView *)TableView cellForRowAtIndexPath:(NSIndexPath *) indexPath



테이블 뷰 각 로우를 지정하는 데 사용되는 오브젝트는 NSIndexPath 클래스의 인스턴스.

NSIndexPath는 테이블 뷰의 위치를 지정하는데 사용하기 위해 확장, 섹션과 로우 값을 가짐.

NSIndexPath의 인스턴스인 indexPath가 있으면, 

indexPath.section을 통해 인덱스패스 오브젝트가 가리키는 섹션을,

indexPath.row를 통해 인덱스패스 오브젝트가 가리키는 row를 알 수 있다.


즉 하나의 인덱스패스 오브젝트는 테이블 뷰에서 하나의 테이블 셀의 위치를 가리키고 있는 것이다.





--


재사용 Queue, Reuse Queue.