2016-08-16 1 views
0

UITableViewCell의 서브 클래스 인 클래스를 만들고 동일한 파일에 xib 파일을 생성했습니다. 내가 가지고있는 클래스에서UITableView 사용자 정의 셀 IBOutlets이 없음

static NSString *CellIdentifier = @"ChatCell"; 
ChatCustomCell *cell = (ChatCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

다음 xib 파일 나는 UITableViewCell를 추가하고 그것을 식별자 "ChatCell"등을 제공하고 있습니다에서

는 내 수업 시간에이 같은이 사용자 정의 셀을 사용하는 것을 시도하고있다 IBOutletUIlabel을 제공하고 중 하나에 연결했습니다. xib에서 만들었지 만 셀이 만들어지면 UILabelnil으로 유지됩니다.

왜 이런 일이 발생합니까?

+0

nib 파일을 ViewController에 등록 했습니까? – NSNoob

+0

아니요, 그렇지만 do not think –

+0

스토리 보드를 사용하여 프로토 타입 셀을 만들려면 너는 반드시 nib를 등록 할 필요가 없습니다 –

답변

3

먼저 사용자 지정 Xib 파일을 ViewController에 등록해야합니다. Apple Docs on registerClass:forCellReuseIdentifier:에서

:

호출이 방법 또는있는 registerClass : forCellReuseIdentifier : 방법 어떻게 새로운 세포를 만드는 테이블 뷰를 알 수 있습니다. 지정된 유형의 셀이 현재 재사용 큐에없는 경우 테이블보기는 제공된 정보를 사용하여 자동으로 새 셀 객체를 만듭니다.

예 : 있는 tableView 위임 및 데이터 소스를 설정 한 후, 당신의 viewDidLoad에이 줄을 쓰기 : 당신이하지 않으면

[yourTableView registerNib:[UINib nibWithNibName:@"ChatCustomCell" bundle:nil] forCellReuseIdentifier:@"ChatCell"]; 

은, 당신의 TableView는 셀의 전무 IBOutlets 초래 셀 펜촉 파일을로드 할 수 없습니다.

+0

이 작품을 고맙습니다. 전에도 이것을 시도했지만 어딘가 잘못되었을 수도 있습니다. –

+0

@Avinash : 셀 재사용을 위해 [tableView dequeueReusableCellWithIdentifier : forIndexPath :]를 사용하십시오. 이것은 셀의 반환이 아닌 새로운 API입니다. – kaushal

3

xib 셀의 경우 셀에 nil을 반환 할 수 있으므로이 코드를 쓰면 도움이 될 수 있습니다.

ChatCustomCell *cell = (ChatCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier] 

if (cell == nil) 
{ 
    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"nibName" owner:self options:nil]; 
    cell = [nibArray objectAtIndex:0]; 
}