2014-01-14 2 views
0

그래서 나는 사용자 지정있는 UITableViewCell을 가지고 내가 cellForRowAtIndexPath 메서드에서 다음과 같습니다 코드가 표시되지사용자 정의의 tableview 세포의 XIB는

defaultCell = [self.listView dequeueReusableCellWithIdentifier:DefaultCellIdentifier]; 
     if(defaultCell){ 
      defaultCell = [[DefaultCell alloc]init]; 
     } 

건네되며, 기본 셀 alloced 및 inited는 경우. 그러나 셀이 비어있는 것으로 나타납니다 (xib 파일이 없습니다).

UINib* defaultNib = [UINib nibWithNibName:@"DefaultCell" bundle:nil]; 
    [self.listView registerNib:defaultNib forCellReuseIdentifier:DefaultCellIdentifier]; 

은 왜 내가 대신 내 XIB 파일에 무엇을보고 내 테이블 셀에 빈보기를 얻고있다 -이 같이있는 tableview와 펜촉을 등록거야? 나는 그것이 xib 인 세포를 할당하지 않을 것이기 때문에 그것이라고 생각한다.

무슨 일 이니?

답변

0

UPDATE 1 - 코드의 수정 이 당신의 cellForRowAtIndexPath 방법 에서 사용자 지정 셀을 보여주는 올바른 방법은 오늘 뭔가를 배운 것입니다 : 당신이 셀 대기열 또는하지 않은 경우 확인해야 그나마

메소드가 큐를 큐에서 제거 할 수없는 경우 메소드가 새 펜에서 새 셀을 작성하기 때.입니다. - @Abizern,

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 

    //Set the label's data properties that you may have assuming you have a datasource. 
    cell.customLabelICreated.text = [myStringsDataSourceArray objectAtIndexPath:index.row]; 
+0

올바른 방법은 tableview 셀의 펜촉을 등록하는 것입니다. 그런 다음 셀을 대기열에서 제외했는지 여부를 확인하지 않아도됩니다. 메소드가 대기열에서 대기열에서 큐를 뺄 수없는 경우 새 셀을 만들 것이므로 셀을 대기열에서 제거했는지 여부를 확인할 필요가 없습니다. – Abizern

+0

@Abizern OP가 귀하의 게시물을 대신 보게하려는 노력으로 다운 투표 시스템을 남용하지 마십시오. 내 실수로 약간의 실수가 있었다면 혼자서도 지식을 수용하고 공유하십시오. 그리고 downvoting 시스템을 사용하는 방법에 대한 링크 : stackoverflow.com/help/privileges/vote-down을 참조하십시오. stackoverflow에서 인용 : "심각하게 엉성하거나 노력하지 않은 게시물이나 명확하고 위험 할 수는없는 답변이있을 때마다 downvotes를 사용하십시오." - Pavan 1 분 전 – Pavan

0

처음과 같이 테이블 뷰 셀에 대한 당신의 펜촉을 등록 : cellForRowAtIndexPath에서

[self.tableView registerNib:[UINib nibWithNibName:@"nib name" bundle:nil] forCellReuseIdentifier:DefaultCellIdentifier]; 

. 셀을 명시 적으로 할당 할 필요가 없습니다.

대신 당신이

0

이 호출은 두 가지 이유로 잘못 ..이 도움이

defaultCell = [self.listView dequeueReusableCellWithIdentifier:DefaultCellIdentifier]; 

[defaultCell configureCell];//In configure cell method set any images or labels u want. 
return defaultCell 

희망 같은 것을 할 수있다 : 첫째

if(defaultCell){ 
    defaultCell = [[DefaultCell alloc]init]; 
} 

, 그것은해야 if(!defaultCell)

두 번째로, 셀이 대기열에서 제외되었는지 확인하지 않아도됩니다. 당신이 펜촉을 등록했다면 요. dequeueReusableCellWithIdentifier은이 경우 항상 셀을 반환합니다. 구성하기 만하면됩니다.

사실,이 코드 블록은 전혀 필요하지 않습니다.

+0

OP가 귀하의 게시물을 대신 보게하려는 노력으로 다운 투표 시스템을 남용하지 마십시오. 내 실수로 약간의 실수가 있었다면 혼자서도 지식을 수용하고 공유하십시오. 그리고이 링크를 참조하십시오 : http : // stackoverflow.com/help/privileges/vote-downvoting 시스템을 사용하는 방법에 대해 설명합니다. stackoverflow에서 인용 : "심각하게 엉성한", "노력하지 않은"게시물 또는 "명확하게"위험한 부정확 한 답변이있을 때마다 downvotes를 사용하십시오. " – Pavan

+0

@Pavan a) 셀에 코코아 콩을 이미 등록 했으므로 답이 잘못되었습니다 (IMHO). 수표를 찍지 않아도됩니다. b) 그립을 잡아라, 친구. – Abizern

+0

예 온라인 소스에서 배운 나의 방법이 잘못되었습니다. 귀하의 답변에 OP를 유치하기 위해서만 투표 시스템을 남용하지 마십시오. 내가 전에 말했듯이 누군가가 작고 큰 실수를 저질렀다면 죽이는 대신 올바른 방향으로 밀어 넣을 수있다. 나는 내 자리를 바로 잡을 것이다. 너 같은 사람들이 다른 사람들을 괴롭히는 것을 그만두면 나는 곧 손을 잡을 것이다. – Pavan

관련 문제