아이폰어플개발정보2010. 9. 11. 01:32
아이폰 어플 개발 Table View 의 기초

Table View Basics
iPhone tables(UITableView) 의 행(Row)수는 제한이 없음.(iPhone OS Memory)
UITableView - 테이블의 Data를 표시하는 뷰 오브젝트.
UITableViewCell - 테이블의 단일 행을 표현.

UITableViewCell 에 복수의 데이터를 추가하기 위해서
1.UITableViewCell 에 subview 를 추가 하거나
2.UITableViewCell 을 상속하는 서브클래스 작성.

Table > Section > Rows...
그룹 테이블(Figure 8-3)에서 각 Section 은 한 그룹을 나타냄.
인덱스 테이블(Figure 8-3)에서 각 Section 은 한 인덱스의 집합.

Implementing a Simple Table
Writing the Controller

  1. // delegate, datasource protocol 선언.
  2. // datasource 는 테이블 각 행에 대한 데이터 핸들.
  3. // delegate 는 데이터의 설정(font, user interation...) 핸들.
  4. @interface SomeUITableView  {  
  5.     // Table Data.
  6.     NSArray *tableData;  
  7.     ...  
  8. }  
  9. #pragma mark -
  10. #pragma mark Table View Data Source Methods
  11. // 해당 Section 에 행 수.
  12. - (NSInteger)tableView:(UITableView *)tableView  
  13.  numberOfRowsInSection:(NSInteger)section {  
  14.     return [self.tableData count];  
  15. }  
  16. // 행이 그려질 때 호출되어 현재 표시될 행의 UITableViewCell 를 리턴.
  17. // NSIndexPath 를 이용해서 해당 Section[indexPath section]과
  18. // 해당 행[indexPath row]을 알 수 있음.
  19. // UITableViewCell 는 캐쉬화 되고 시스템 메모리가 부족할 때 자동 메모리 해제됨.
  20. - (UITableViewCell *)tableView:(UITableView *)tableView  
  21.          cellForRowAtIndexPath:(NSIndexPath *)indexPath {  
  22.     // cache 할 때 구분자.
  23.     static NSString *SomeID = @"SomeID";  
  24.     // cache 에 저장된 UITableViewCell 취득.
  25.     UITableViewCell *cell = [tableView   
  26.                              dequeueReusableCellWithIdentifier:SomeID];  
  27.     if (cell == nil) {  
  28.         cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero  
  29.                  reuseIdentifier:SomeID] autorelease];  
  30.     }  
  31.     ...  
  32. }  


Adding an Image
UITableViewCell 의 기본 옵션으로 각 행의 왼쪽에 이미지를 붙일 수 있음.
  1. // tableview:cellForRowAtIndexPath:
  2. ...  
  3. UIImage *image = [UIImage imageNamed:@"someImage.png"];  
  4. cell.image = image;  
  5. ...  


Addtional Configurations
Setting the Indent Level
  1. #pragma mark -
  2. #pragma mark Table View Delegate Methods
  3. // 각 행의 indent level(NSInteger) 설정.
  4. - (NSInteger)tableView:(UITableView *)tableView  
  5. indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath {  
  6.     ...  
  7.     return indentLevel;  
  8. }  


Handling Row Selection
USER 가 선택한 행의 이벤트 전후로 핸들링이 가능.
  1. - (NSIndexPath *)tableView:(UITableView *)tableView  
  2.   willSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  3.     // USER 선택에 대한 이벤트 전처리.
  4.     ....  
  5. }  
  6. - (NSIndexPath *)tableView:(UITableView *)tableView  
  7.    didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
  8.     // USER 선택에 대한 이벤트 후처리.
  9.     ....  
  10. }  


Changing Font Size and Row Height
  1. // tableview:cellForRowAtIndexPath:
  2. ...  
  3. cell.font = [UIFont boldSystemFontOfSize:80];  
  4. ...  
  5. // 열의 높이 설정.
  6. - (CGFloat)tableView:(UITableView *)tableView  
  7. heightForRowAtIndexPath:(NSIndexPath *)indexPath {  
  8.     ....  
  9.     return height;  
  10. }  



출처 : http://blog.naver.com/PostList.nhn?blogId=hana_815¤tPage=91
Posted by 오늘마감

댓글을 달아 주세요