기본 UITableViewCell이 아닌 자작 셀을 사용해 보도록 하겠습니다.
우선 커스텀 셀 파일을 만듭니다
- iPhone OS에서 UITableViewCell 형식의 파일을 선택합니다.
- 파일이름은 적당히 만들고 ALso creat "파일명.h" 옵션을 체크하여 헤더파일역시 만들어 줍니다.
- 헤더파일 입니다. 암것도 없습니다.
- 구현 파일 역시 기본 구성..
막 만든거라 물론 기본만 구현되어 있고 아무것도 없습니다
이렇게 커스텀 셀을 만들어도
기본 셀에 제공되는 세개의 뷰는 여전히 있습니다 (이미지뷰, 라벨뷰, 커스텀뷰(악세사리뷰) ) - 기억해 둡시다.
셀에 데이터를 설정하는 방법으로
두가지가 있습니다
셀을 틀로만 만들고 데이터를 직접 설정하는 방법과
셀에 데이터를 넘기면 셀이 알아서 설정하는 방법입니다
여기서는 전자로 하겠습니다
우선 만들어진 셀에 다음과 같이 코딩합니다
- class에서 사용할 UITextField를 선언해 줍니다.
- 이제 설명안해도 자동으로 헤더에 선언한 변수를 구현파일에서 세러,게러 자동생성 synthesize 선언과 release가 따라와야겠죠
textField 라는 UITextField, 즉 텍스트 입력받는 뷰를 만들어서 셀에 붙여 보겠습니다
또한 textField를 @property로 설정해서 외부에서 직접 textField를 다루도록 했습니다.
이제 사용해 보겠습니다
먼저 이 커스텀 셀 클래스를 참조합니다 #import "CustomCell.h"
셀을 제작해서 돌려주는 함수에서
셀을 메모리에 새로 만드는 코드인
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"testcell"] autorelease];
이걸 다음과 같이 수정합니다
cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"testcell"] autorelease];
이걸로 기본 셀 대신에 커스텀 셀이 만들어 졌습니다
여기서 주의 하실것이 있습니다
cell이 UITableViewCell로 정의 되었다는 겁니다
그래서 커스텀 셀의 textField에 접근하기 위해 다음과 같이 코딩하시면 에러나고 빌드 자체가 안되게 됩니다
cell.textField.text = [oneCell objectForKey:@"text"];
어쿠야~~ 에러다
cell의 데이터형이 틀려서 나는 문제입니다만 강제로 데이터형을 잡아주는 것이 가능합니다
[(CustomCell *)cell textField].text = [oneCell objectForKey:@"text"];
cell앞에 (CustomCell *) 을 붙여줌으로서 강제 전환이 가능합니다.
물론 강제로 정의 해놓고 그 cell의 실제 데이터형이 틀리다면 런타임 에러가 나겠죠
위와 같이 매번 정의하고 하는 방법이 있는가 하면
한번 새로 정의 하고 사용하는 방법도 있습니다
CustomCell *customCell = (CustomCell *)cell;
customCell.textField.text = [oneCell objectForKey:@"text"];
이건 각자 취향에 맞게하시면 됩니다.
한번 코딩하고 돌려보겠습니다
메인 컨트롤러에 일단 만들어 놓은 cell파일을 import 시키고
cell 값안에 들어가는 UITableViewCell에서 만들어 놓은 CustomCell로 수정해 줍니다. - 이때 CustomCell의 데이터형이 실제로 같아야 합니다.
셀 하나당 텍스트필드를 만들어 넣었고
텍스트 필드레 원래 데이터를 넣어봤습니다.
여기서는 간단하게 텍스트 필드만 만들어 봤지만
응용, 아시죠^^?
이상으로 UITableView끝장보기 시리즈(?)는 마치도록 하겠습니다
젠장 이해는 되는데 안보고 혼자 하기는 아직 힘들다.
조금 더 개념 정리가 필요하다
'개발 > App Developer' 카테고리의 다른 글
HIG 번역하다 말았네요 (0) | 2010.09.06 |
---|---|
IB 없이 하기, UITableView끝장보기 (5) 인덱스 (0) | 2010.09.01 |
UITableView 에 Header, Footer를 넣어보자 (0) | 2010.09.01 |
제공 함수 도움말 바로 링크 (0) | 2010.09.01 |
UIButton의 기능 설정 (0) | 2010.09.01 |