- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
셀을 만드는 함수에서
cell.image = [UIImage imageNamed:@"이미지 파일명"];
cell.text = @"test";
방법으로 문자열을 설정할수 있으며
cell.font = [UIFont systemFontOfSize:20.0];
글자 크기및 폰트는 위 방법으로 설정하실수 있습니다
그러나 지원되는 폰트가 한계가 있고 한국어의 경우 기본 폰트 하나 밖에 지원되지 않습니다
그래서 다른 폰트를 사용하려면 이미지로 맵핑하는 방법이 있습니다만
결국 보통 방법으로는 안된다는 거죠...
라벨뷰에 적힐 문자열의 배치(정렬)도 정할수 있습니다
cell.textAlignment = UITextAlignmentCenter;
정렬은 UITextAlignmentLeft(왼쪽), UITextAlignmentCenter(가운데), UITextAlignmentRight(오른쪽) 이 세가지로 설정하시면 됩니다
설정하지 않으면 기본값으로 UITextAlignmentLeft가 선택되게 됩니다
글자색 설정하는건
cell.textColor = [UIColor redColor];
방법으로 설정하실수 있습니다.
이 외에도 다양한 설정 옵션들이 있습니다만 기능하나하나 설명하려하면 내용이 너무 길어지는 관계로
기본적인 기능만 설명하겠습니다 좀더 자세한 정보는 라이브러리에 API를 보시거나 UITableViewCell의 헤더를 열어보시길 추천합니다
한번 코딩하고 돌려보겠습니다
글자색은 빨강색으로하고 정렬을 가운데로, 그리고 왼쪽에 위치한 이미지뷰에는 임의의 이미지를 설정해봤습니다. 이번에는 악세사리뷰를 해보겠습니다 악세사리뷰는 두가지 방법으로 구현됩니다. 시스템에서 기본 제공되는 설정을 사용하거나 자신이 원하는 뷰를 만들어 넣을수 있습니다 직접 제작하는 뷰의 경우 너무 커서는 안되겠죠. 우선 시스템에서 제공되는 악세사리는 사용해 보겠습니다 시스템 악세사리에는 총 4가지가 제공됩니다 UITableViewCellAccessoryNone 기본적인 형태로 악세사리뷰에 아무것도 없을때 씁니다 (기본값) UITableViewCellAccessoryDisclosureIndicator > 표시를 이미지로 넣어진 악세사리입니다 보통 그 셀의 정보를 한단계 더 들어갈때 표현합니다. 예) 영화관 리스트 -> 상영 목록 UITableViewCellAccessoryDetailDisclosureButton 그 셀의 정보를 보고자 할때 표현 합니다 예) 상영 목록 -> 영화 정보 UITableViewCellAccessoryCheckmark 채크 이미지로 리스트에서 특정 셀이 선택되었다고 표현할때 씁니다. 시스템 악세사리 설정은 cell.accessoryType = UITableViewCellAccessoryNone; 방법으로 설정하시면 됩니다. 한번 코딩해보겠습니다
일일이 하나해보고 스샷찍고 하기에는 번거로아서 switch문으로 0번째 셀에는 none(없음)으로, 1번은 UITableViewCellAccessoryDisclosureIndicator, 2번은 UITableViewCellAccessoryDetailDisclosureButton, 그리고 3번은 UITableViewCellAccessoryCheckmark뜨게 해보았습니다. 이번에는 커스텀 악세사리뷰를 만들어 보겠습니다 커스텀 악세사리뷰는 cell.accessoryView = ? 방식으로 설정하게 됩니다 *악세사리뷰가 설정되면 기본 제공 악세사리는 무시됩니다. accessoryView는 UIView으로 정의되어 있습니다. 앞서 설명한 이미지 뷰는 이미지 실제 크기에 이미지뷰가 맞춰지게 됩니다 그리고 셀의 왼쪽에 위치하기 때문에 왼쪽에서 오른쪽으로 늘어 나게 됩니다 악세사리뷰의 경우 셀의 오른쪽에 위치하기 때문에 뷰의 크기에 따라 오른쪽에서 왼쪽으로 늘어나게 됩니다 한번 악세사리뷰에 이미지뷰를 만들어서 붙여보겠습니다 cell.accessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"p1.png"]] autorelease]; 아까 올린 이미지가 있으니 재활용 해봤습니다
아까의 스위치문에서 조금 바꿔 주는 방법으로 고쳐봤습니다 셀이 0번부터 3번까지는 제공 악세사리를 사용하고 그외 셀은 이미지뷰를 넣도록 했습니다 셀의 갯수가 5개라 그중 4개가 사용되었으니 한개만 이미지뷰로 뜬것을 알수있습니다. 이번에는 셀의 갯수를 늘리고 UISwitch와 UISlider를 넣어서 응용해보겠습니다. 셀의 갯수를 7개로 수정해주고 스위치 문에 case 4: cell.accessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"p1.png"]] autorelease]; break; case 5: cell.accessoryView = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease]; break; case 6: cell.accessoryView = [[[UISlider alloc] initWithFrame:CGRectMake(0.0, 0.0, 200.0, 20.0)] autorelease]; break; 다음을 추가해 주었습니다
우선 셀의 갯수를 7로 늘려주고
switch 문에 추가..
설명했듯이 테이블뷰는 화면에 보이는 셀만으로 재사용 하며 계속 데이터를 보여주는 방식을 쓰고 있습니다 그래서 전에 설정된 데이터가 남아 있다는 거죠 cell.text = nil; cell.image = nil; cell.accessoryView = nil; cell.accessoryType = UITableViewCellAccessoryNone; 상황에 따라 할 필요가 없기도 합니다만, 그건 개발자 몫이죠
'개발 > App Developer' 카테고리의 다른 글
IB 없이 하기, UIButton (0) | 2010.09.06 |
---|---|
IB 없이 하기, UITableView끝장보기 (2) 그룹과 셀 (0) | 2010.09.06 |
IB 없이 하기, UITableView끝장보기 (4) 테이블 편집 (0) | 2010.09.06 |
Foundation Kit (0) | 2010.09.06 |
메소드와 메세지 (0) | 2010.09.06 |