2013-06-12 4 views
1

나는 범용 앱을 개발 중입니다. iPhone 및 iPad 시뮬레이터와 iPhone 4S에서 잘 실행되지만 iPad에서는 충돌이 발생합니다. 그것은 iPad에서 분할보기이며 그것이 충돌 특정보기를 열 때만입니다. 일부보기는 정상적으로 작동하며 문제는 없지만 마스터보기에서 특정 행을 선택하면 상세보기에 새보기가 표시됩니다. iPad 시뮬레이터에서 실행하면 문제가되는보기가 잘 열립니다. 어떤 아이디어?장치에서 응용 프로그램이 충돌하지만 시뮬레이터에서는 발생하지 않습니다.

다음은 마스터보기에서 행을 선택할 때 세부보기에서 문제보기 중 하나를 표시하는 방법입니다. 이보기에 검색 막대가 있으며 검색 막대가 표시되지만지도보기에는 표시되지 않습니다. 다시 말하지만, 모든 것이 iPad 시뮬레이터에서 잘 돌아갑니다.

else if (indexPath.row == 8) 
    { 
     RSFMipad *rsfm = [[RSFMipad alloc]initWithNibName:nil bundle:nil]; 
     NSMutableArray *details = [self.splitViewController.viewControllers mutableCopy]; 

     UINavigationController *detailNav = [[UINavigationController alloc]initWithRootViewController:rsfm]; 

     [details replaceObjectAtIndex:1 withObject:detailNav]; 

     KFBAppDelegate *appDelegate = (KFBAppDelegate *)[[UIApplication sharedApplication]delegate]; 
     appDelegate.splitViewController.viewControllers = details; 
     appDelegate.window.rootViewController = self.splitViewController; 
     appDelegate.splitViewController.delegate = rsfm; 
     [appDelegate.splitViewController viewWillAppear:YES]; 
    } 

여기 마스터보기의 다른 행에서 다른 것을로드하는 또 다른 예가 있습니다. 이 옵션은 상세 뷰를 즉시 채우지 않고 대신 마스터 뷰에 새 테이블 뷰를로드합니다. 이것은 iPad에서도 충돌이 발생하지만 시뮬레이터에서는 충돌을 일으 킵니다. 로그에 표시

else if (indexPath.row == 6) 
    { 
     MemberBenefitsipad *benefits = [[MemberBenefitsipad alloc] initWithNibName:@"MemberBenefitsipad" bundle:[NSBundle mainBundle]]; 
     [self.navigationController pushViewController:benefits animated:YES]; 
    } 

오류 오류는 다음과 같습니다

2013-06-12 14:36:54.267 KFBNewsroom[12125:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/ED63F1DA-31C8-4FC1-81D7-A3DCE3186C98/KFBNewsroom.app> (loaded)' with name 'MemberBenefitsipad'' 

편집 : 나는 문제를 해결했다. xib 파일을 번들 리소스에 넣기 만하면되었습니다.

답변

1

이 문제는 아마도 xib 파일의 이름 때문에 발생합니다. MemberBenefitsipad이라는 이름의 xib가 없습니다.

iPhone 및 iPad 용보기 컨트롤러에 대해 다른 xib 파일을 사용하는 경우이 "MyXibFile ~ ipad.xib"(iPad의 경우) 및 "MyXibFile ~ iphone.xib"(iPhone의 경우)과 같은 파일을로드하면 xib는 전체 이름이 아닌 "MyXibFile"문자열 만 사용하므로 OS에 따라 장치에 따라 필요한 xib가로드됩니다. 시뮬레이터는 대소 문자를 구분하지 않기 때문에

는 또한 자원과 XIB 명명주의 오순절 수 (MyXibFile = myxibfile)하지만이 장치는 대소 문자 (MyXibFile! = myxibfile)이다

관련 문제