2013-05-06 1 views
0

단위 뷰 컨트롤러를 설치하려고하는데, 뷰 초기화를 얻는 두 가지 방법을 시도했습니다. 첫 번째 방법은 번들을 사용하여 펜촉 콘텐츠를로드하고 찾고있는 필터를 제거하는 것입니다. 에 대한 다음과 같은 :nib 클래스가 다른 타겟에서 다른가요?

MyViewController *controller = nil; 
.... 
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; 
NSEnumerator *nibEnumerator = [nibContents objectEnumerator]; 
NSObject* nibItem = nil; 
while ((nibItem = [nibEnumerator nextObject]) != nil) { 
    if ([nibItem isKindOfClass:[MyViewController class]]) { 
    controller = (MyViewController*) nibItem; 
    break; 
    } else { 
     NSLog(@"nibItem class is %@", [nibItem class]); 
     NSLog(@"nibItem is %@", nibItem); 
    } 
} 

이 코드가 완료되면, 컨트롤러는 아직도 내가 펜촉 클래스 (이 % @ 장소 홀더)를 검사하는 일부 로그를 삽입했습니다, 전무, 그리고 그것과 동일 밝혀 MyViewController (적어도 두 클래스 설명 않았다), 그리고 이러한 코드는 디버그/릴리스 대상에서 매우 잘 작동하는지 확신하지만 단위 테스트를 실행하는 동안 작동하지 않습니다.

그렇다면 클래스 설명이 동일해도 클래스가 다르다는 뜻입니까?

내가 시도한 두 번째 방법은 initWithNibNamed : owner : options 메서드를 사용하는 것입니다. xib 파일 이름을 지정하기 만하면됩니다.하지만 nib가로드되지만보기 콘센트가 설정되지 않은 응답은 질문과 마찬가지로 상황을 설명합니다. 발견,하지만 난 상황이 설정이 제대로되어 있는지 다시 확인해야 :

인터페이스 Buildedr에서
  1. ,
  2. 내 테스트 대상에 복사 구축 리소스 섹션의 목록에 XIB 파일을 추가합니다 사용자 정의 클래스 이름을 지정을
  3. tableview 콘센트를 인터페이스 파일에 연결하십시오 (뷰 콘센트를 클래스에 드래그 할 수는 없지만 그것은 자동으로 클래스의 tableView 가리 킵니다)

지금까지 테스트 통과보기를 얻을 수있는 유일한 방법은 수동으로보기 컨트롤러의보기 및 테이블보기를 설정하는 것입니다.

답변

0
MyViewController *controller; 
NSArray* nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; 
controller=(MyViewController *)[nibContents objectAtIndex:0]; 

기존 코드를이 코드로 바꾸십시오. 희망이 도움이 될 것입니다.

+0

작동합니다! 감사합니다 Gaurav Rastogi! 왜 그런 일이 일어나는 지 알기 위해 내가 말할 수있는 것이 있습니까? –

관련 문제