2014-09-17 5 views
1

사용자 정의 테이블 셀을 만드는 데 사용하려는 UITableViewCell 사용자 정의 클래스가 있습니다. 나는 사용자 정의 테이블 셀의 xib와 그 헤더와 구현 파일을 모두 RTRepairOrderTableCell.m/.h/.xib라고 불렀다.등록 된 NIB, dequeueReusableCellWithIdentifier를 사용할 때 여전히 어설 션 오류가 발생합니다.

내 문제는 .xib 파일 내부에서 표 셀의 재사용 식별자를 RTRepairOrderTableCell으로 설정하고 xib을 내 테이블보기 컨트롤러에 등록 했는데도 대기열에서 제외하려고 시도 할 때 여전히 어설 션 오류가 발생합니다. 사용하기 위해 새 셀을 만듭니다.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    //Load the nib file 
    UINib *nib = [UINib nibWithNibName:@"RTRepairOrderTableCell" 
           bundle:nil]; 
    // Register this Nib, which contains the cell 
    [self.tableView registerNib:nib 
     forCellReuseIdentifier:@"RTRepairOrderTableCell"];  
} 

여기에 오류가 없습니다 그것은 잘 viewDidLoad 완료 : 내보기 (테이블) 컨트롤러의 내부

나는 다음 있습니다. 이 너무 오래 내가 XIB 파일 내에서 적절하게 설정 재사용 식별자를 가지고 작업을해야 내가 본 모든 튜토리얼에 따르면

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{  
    RTRepairOrderTableCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RTRepairOrderTableCell" forIndexPath:indexPath];  
    return cell; 
} 

나는 것을 등록 : 내 cellForRowAtIndexPath의 내부

나는 다음이 내가

*** Assertion failure in -[UITableView _dequeueReusableViewOfType:withIdentifier:], /SourceCache/UIKit/UIKit-2935.138/UITableView.m:5413 

답변

5

을 받고있는 이유 테이블 셀을 표시합니다 뷰 컨트롤러 클래스의 viewDidLoad의 내부 XIB, 그래서 내가 nib 파일 내부하지만 외부 몇 고아 UIImage 객체를 가지고에 관해서는 손실 밝혀입니다 의 UITableViewCell 영역이므로 UITableViewCell이 최상위 뷰일 필요가 있다고 말하는 오류가 발생했습니다.

+1

광산은 유사한 이유로 UITableViewCell 펜촉의 UITapGestureRecognizer에 의해 발생했습니다. –

0

이것은 드문 경우 일 수 있지만 일부 부주의 한 복사 파스타로 인해 내 테이블에 사용 된 두 개의 다른 사용자 정의 클래스가 동일한 식별자를 Xib에 지정했습니다.

Attributes Inspector에서이 셀 중 하나를 다른 식별자로 바꾸면 내 어설 션 오류가 해결되었습니다.

1

나는이 일에 직면하여 나를 미치게 만들었다. 그러나 그것은 내 잘못이었다. Nib 파일에 식별자 "Abc"를 설정했고 다른 nib 파일에 @ "Xyz"를 등록했습니다. 펜촉에서 식별자를 제거하고 해당 부분을 비워두면 챔피언처럼 작동합니다. :)

+0

아! 이것은 나를위한 것이 었습니다. – user1366265