[ios] 번들에 NIB를로드 할 수 없습니다.
Janrain Engage를 Appcelerator Titanium과 맞춤 모듈로 통합하려고합니다. 샘플 모듈을 만들고 Jainrain 문서에 표시된대로 JREngage 폴더를 샘플 모듈 xcodeproj로 드래그했습니다.
이제이 프로젝트에 빌드 명령을 ./build.py
내린 다음를 실행하고 마지막으로 titanium run
명령을 실행합니다 . 빈 화면으로 시뮬레이터에서 응용 프로그램을 시작하고 즉시 충돌하여 다음 오류가 발생합니다.
포착되지 않은 예외 ‘NSInternalInconsistencyException’으로 인해 앱 종료, 이유 : ‘번들에 NIB를로드 할 수 없음 :’NSBundle </ Users / abhilash / Library / Application Support / iPhone Simulator / 4.2 / Applications / CA167346-4091-4E16-B841-955D1D391713 / test.app> (로드 됨) ‘이름이’JRProvidersController ‘입니다.
이 오류가 발생하는 이유는 무엇입니까?
답변
파일 검사기에서 .xib 파일의 속성을 방문하고 선택 상자의 속성 “Target Membership”피치를 방문하면 xib 파일이 타겟과 연결됩니다.
답변
에 Targets -> Build Phases
.xib가에 추가되었는지 확인하고 Copy Bundle Resources
,없는 경우 .xib 파일을 추가합니다.
답변
모두 알아 내려고
XXXController = [[XXXControlloer alloc] initWithNibName:@"XXXController" bundle:nil];
코드에서 XXXController
철자가 올바른지 확인하십시오.
답변
xcode를 3.2에서 4.02로 업그레이드 한 후에도 동일한 문제가 발생했습니다 ( ‘번들에 NIB를로드 할 수 없음 : ..’예외). Xcode 3.2로 내 앱을 배포하면 xcode 4와 충돌하여 위에서 언급 한 예외가 발생하지만 IOS Simulator (v.4.2)에 배포하려고 할 때만 발생합니다. IOS 기기 (v.4.1) 타겟팅은 Xcode 4에서도 작동합니다.
그 이유는 .xib 파일에 거의 “숨겨진”설정이라는 것이 밝혀졌습니다.
파일 검사기에서 .xib 파일의 속성을 방문합니다. 모든 .xib 파일에 대해 ‘위치’속성이 ‘그룹에 상대적’으로 설정되었습니다. 나는 그것을 ‘Relative to project’로 변경했고 짜잔 : 이제 모든 .xib 파일이 IOS 시뮬레이터에 올바르게로드되었습니다!
이 이상한 Xcode4 동작에 대한 이유가 무엇인지 모르겠지만 시도해 볼 가치가 있습니까?
답변
제 경우에는 매우 이상했습니다 (스토리 보드 사용). 어떤 이유로 plist에서 “Main storyboard file base name”에서 “Main nib file base name”으로 변경되었습니다.
“기본 스토리 보드 파일 기본 이름”(UIMainStoryboardFile)으로 다시 변경하면 문제가 해결되었습니다.
답변
이 오류는 "JRProvidersController"
이름이있는 .xib 파일이 없음을 의미합니다 . JRProvidersController.xib
존재 하는지 다시 확인하십시오 .
당신은로드 .xib file
와 함께
controller = [[JRProvidersController alloc] initWithNibName:@"JRProvidersController" bundle:nil];
답변
Objective-C보기 컨트롤러에서 사용자 지정 Swift보기를 사용하여 (예, <<PROJECT NAME>>-Swift.h
파일 을 가져온 후에도) 다음 을 사용하여 펜촉을로드하려고했습니다.
MyCustomView *customView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([MyCustomView class]) owner:self options:nil] objectAtIndex:0];
…하지만 NSStringFromClass([MyCustomView class])
반환 <<PROJECT NAME>>.MyCustomView
되고로드가 실패합니다. TL; DR All은 문자열 리터럴을 사용하여 펜촉을 잘로드했습니다.
MyCustomView *customView = [[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil] objectAtIndex:0];