2013-03-27 4 views
0

나는 일련의 UIView 하위 클래스를 만들었습니다. 각각은 다른 것에서 상속됩니다.NIB 파일이로드되었는지 여부를 어떻게 알 수 있습니까?

NSString * className = NSStringFromClass([self class]); 
[[NSBundle mainBundle] loadNibNamed:className owner:self options:nil]; 

이 코드의 문제는 모든 서브 클래스가 자신의 NIB을 가지고있다 : 모든 서브 클래스의 웅대 한 그랜드 부모에

이 코드입니다. 일부는 부모 클래스의 NIB를 사용합니다.

코드를 실행하기 전에 NIB에서 UIView이로드되었는지 여부를 확인하고 싶습니다.

어떻게하면됩니까?

+1

객체하면'initWithCoder을 사용하여 초기화됩니다' 방법. 나는 이니셜 라이저를 무시하고 나중에 검사 할 플래그를 유지할 수 있다고 생각한다. – Alladinian

답변

0

코드가 예상대로 작동하지 않습니다. 죄송합니다. NSStringFromClass([self class])을 사용하여 펜촉 이름을 가져 오면 클래스 이름이있는 펜촉이 없으면로드되지 않으며 개체는 무효가됩니다. NIB에는 상속이 없습니다. 클래스 이름이 실패 할 때 명시 적 nib 이름을 사용해 볼 수 있습니다. 뭔가 같이 :

id myView = [[NSBundle mainBundle] loadNibNamed:className owner:self options:nil]; 
if (!myView) 
    myView = [[NSBundle mainBundle] loadNibNamed:@"defaultNIBname" owner:self options:nil]; 

하거나 모든 오브젝트 계층 구조 클래스를 얻을 모두가 하나 NIB을 찾을까지 당신을 시도해 볼 수도 있습니다 .. 펜촉/스토리 보드를 통해 인스턴스화

관련 문제