2012-12-11 3 views
2

NIB/XIB 파일을 Configuration.bundle이라고하는 번들에 넣으려고합니다. 내 번들에서 xib을로드하려고하면 xib 파일을 찾을 수 없기 때문에 응용 프로그램이 충돌합니다. (아직로드) NSBundle내 번들에서 펜촉을로드 중입니까?

'아직로드되지'부분은 나에게 조금 무서워 :

NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] 
pathForResource:@"Configuration" ofType:@"bundle"]]; 
[bundle load]; 
NSLog(@"bundle: %@", bundle); 

나는 출력을

번들을 얻을. 왜로드되지 않는거야?

그리고 마지막으로 내가

ConfigViewController *configViewController = [[ConfigViewController alloc] initWithNibName:@"ConfigViewController" bundle:bundle]; 

내가 인해 캐치되지 않는 예외 'NSInternalInconsistencyException'응용 프로그램 종료, 이유는 출력

*를 얻을 뷰 컨트롤러와 내 펜촉을로드하려고 할 때 ' 번들로 NIB를로드 할 수 없습니다 : 'ConfigViewController.xib'라는 이름의 'NSBundle (아직로드되지 않음)'

나는 .xib의 유무에 관계없이 모두 시도했다.

아이디어가 있으십니까?

답변

1

로드 방법은 프레임 워크 및 이와 같은 실행 코드를로드하는 데 사용됩니다.
번들에로드 할 실행 파일이 포함되어 있지 않으므로 [번들로드]으로 전화하지 않아야합니다.
번들 IR 오른쪽의 이름이, 모든 당신이 을 제외하고 작성한 경우 [번들로드]이 fine.Anyways 너무 많이 지시, 경로가 올바른 사람인지 확인 둥지를하지 않는 것입니다 :

NSString* path=[ [NSBundle mainBundle] pathForResource: @"Configuration" ofType: @"bundle"]; 

이 문자열이 올바른 경로이면 [번들로드]을 호출하지 않고 번들이 올바르게로드 될 것입니다.

+0

해당 의견을 주셔서 감사하지만 내 문제에 대한 해결책은 아닙니다. 그것은 여전히 ​​펜촉을 적재하지 않습니다 : ( – Erik

+0

이 시점에서 잘못 될 번들 이름이거나 실제 번들 안에 있지 않습니다. 복사 했습니까? –

+0

번들 이름을 잘못 입력하면 NSBundle은 무효가 될 것입니다. – Erik

0

먼저 번들이 제대로 작성되지 않으면로드되지 않습니다. 따라서 번들을 만드는 단계는 아래에서 적절한 번들을 만드는 단계입니다.
1. OS X -> Framework & 라이브러리에서 번들이라는 템플레이트를 선택하여 새 대상을 추가합니다.

  1. 새로 만든 타겟을 선택하고 BaseSDK를 OSX에서 최신 iOS로 변경하십시오.

  2. 빌드 구문 -> 번들 리소스 복사에서 번들로 사용하려는 .xibs, 이미지 또는 기타 리소스를 추가하십시오.

  3. Build Phrases에서 CoreFoundation 프레임 워크를 추가 -> 라이브러리와 바이너리 연결.

  4. iOS 기기를 선택하여 타겟을 컴파일하십시오.

  5. 새로 만든 번들을 제품 디렉토리에서 일부 위치에 저장하십시오.

이제 기본 프로젝트에 해당 번들을 복사하십시오. 아래 코드를 사용하여 묶음을로드하십시오 :

이제 새 번들로 설정되었습니다.