2012-03-22 3 views
7

iOS 응용 프로그램에서는 UITableView#dequeueReusableCellWithIdentifier을 사용하기 전에 nib 파일을 테이블보기에 등록해야합니다.재사용 식별자가 이미 UITableView에 등록되어 있는지 어떻게 확인할 수 있습니까?

예 :

static NSString *myReuseIdentifier = @"MyReuseIdentifier"; 
UINib *cellNib = [UINib nibWithNibName:myReuseIdentifier bundle:nil]; 
[self.tableView registerNib:cellNib forCellReuseIdentifier:myReuseIdentifier]; 

펜촉이 이미 jQuery과에 등록되었는지 확인하는 방법이 있나요?

나는 내 애플 리케이션의 여러 컨트롤러에 걸쳐 다양한 테이블에서 사용하는 사용자 정의 셀 있습니다. 일부 코드를 매크로로 옮기고 싶습니다. 셀이 재사용 할 준비가되지 않은 경우 당신이하려는 어떤 것을 그 경우,하지만

-dequeueReusableCellWithIdentifier: 

반환 nil

-(CustomCell *)customCell:(UITableView *)tableView 
{ 
    static NSString *reuseIdentifier = @"MyReuseIdentifier"; 
    if (![table hasAlreadyRegisteredNib:reuseIdentifier]){ 
     UINib *cellNib = [UINib nibWithNibName:reuseIdentifier bundle:nil]; 
     [self.tableView registerNib:cellNib forCellReuseIdentifier:reuseIdentifier];  
    } 
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 
    return cell; 
} 
+0

그냥 펜촉을 viewDidLoad 메소드에 등록하지 않으시겠습니까? – JiaYow

+0

여러 컨트롤러에 걸쳐 공유되는 매크로를 사용하고 싶기 때문에 – bodacious

+0

여러 테이블이 있으므로 각 테이블마다 펜촉을 등록해야합니다. –

답변

4

같은 뭔가 잘 모르겠습니다. 그렇지 않으면 셀을 반환하므로 간단하게 시도 할 수 있습니다.

+0

위대한 팁! 따라서 셀이 무효인지 확인할 수 있습니다. 그렇다면 테이블에 Nib를 등록한 다음 셀을 반환하십시오! thanks – bodacious

+0

iOS 5에 NIB를 등록하려면 nil에 의존 할 때주의하십시오. VoiceOver가 활성화되면 버그가 있습니다.이 경우 항상 nil을 반환합니다. 그래서 루프를 등록하는 무한 루프로 끝날 것입니다. 자세한 내용 : http://stackoverflow.com/a/13881778/235297 –

0

나는 registerNib:forCellReuseIdentifier:의 요점이 상용구 코드를 줄이는 것이라고 생각합니다. viewDidLoad 방법으로 이것을 한 번만 호출 할 수 있습니까?

+0

여러 컨트롤러에서 동일한 코드를 반복하지 않도록했습니다. 대신이 코드를 매크로로 작성했습니다. – bodacious

관련 문제