2013-10-03 1 views
2

, 나는 다음과 같은 오류를 받고 있어요 'NSInvalidArgumentException', 이유 : '응용 프로그램이 대상에 모달 뷰 컨트롤러를 표시하지 못했습니다.' * 먼저 던져 호출 스택 :Redlaser SDK 및 전무 모달 뷰 컨트롤러/아이폰 OS 7 엑스 코드 5로 업그레이드 한 이후

(

0 CoreFoundation      0x02ef25e4 __exceptionPreprocess + 180 

1 libobjc.A.dylib      0x028dd8b6 objc_exception_throw + 44 

2 UIKit        0x006e817a -[UIViewControllerpresentViewController:withTransition:completion:] + 4879 

3 UIKit        0x006e8caf -[UIViewController presentViewController:animated:completion:] + 130 
4 UIKit        0x006e8cef -[UIViewController presentModalViewController:animated:] + 56 
5 Extinguishers      0x0000b703 -[LoginViewController scanPressed] + 1299 

그리고 여기가 원인이 내 방식의 IT : 나는 또한 최신으로 업그레이드하려고했습니다

-(IBAction) scanPressed 
{ 
if (overlayController.parentPicker == nil) 
{ 
    BarcodePickerController * picker = [[BarcodePickerController alloc] init]; 

    [picker setOverlay:overlayController]; 
    [picker setDelegate:self]; 

    // Initialize with portrait mode as default 
    picker.orientation = UIImageOrientationUp; 

    // The active scanning region size is set in OverlayController.m 
} 

// Update barcode on/off settings 
[overlayController.parentPicker setScanUPCE:YES]; 
[overlayController.parentPicker setScanEAN8:YES]; 
[overlayController.parentPicker setScanEAN13:YES]; 
//[overlayController.parentPicker setScanSTICKY:YES]; 
//[overlayController.parentPicker setScanQRCODE:YES]; 
[overlayController.parentPicker setScanCODE128:YES]; 
[overlayController.parentPicker setScanCODE39:YES]; 
[overlayController.parentPicker setScanITF:YES]; 

// Data matrix decoding does not work very well so it is disabled for now 
[overlayController.parentPicker setScanDATAMATRIX:NO]; 

// hide the status bar 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

// Show the scanner overlay - THIS LINE CAUSES THE CRASH 
    [self presentModalViewController:overlayController.parentPicker animated:TRUE]; 

}

버전의 Redlaser SDK 및 오류가 여전히 동일합니다 .b로 iOS 7 전환하기 전에이 문제가 없었어요. ase SDK.

+0

우선,'presentModalViewController : animated :'는 iOS 6에서 사용되지 않습니다. 대신'presentViewController : animated : completion :'을 사용해보십시오. –

+0

변경되었지만 동일한 오류가 발생했습니다. – codeman

+0

선택보기를 하위보기로 현재보기에 추가하고 모형으로 표시하는 대신 bringviewfront를 시도해보십시오. 그냥 주위에 – Bluewings

답변

0

제가 생각할 수있는 유일한 점은 picker (부모)이 범위를 벗어나 할당이 취소 될 수 있다는 것입니다. 부모가 여전히 존재하는지 확인하기 위해 바로 버그 행하기 전에 테스트를 넣어 : if(overlayController.parentPicker == nil) NSLog(@"Parent is nil");

을 정말 nil 경우 (원래의 오류가 말처럼), 첫 번째 if 문 앞에 picker를 선언하려고합니다. 이 스택에서 팝 귀하의 viewController 전에 할당이 해제되지 않습니다 어디에 당신이 @property 또는 어딘가로 부모를 선언해야 할 수 있도록

BarcodePickerController *picker; 
if(overlayController.parentPicker == nil) 
{ 
    picker = [[BarcodePickerController alloc] init]; 
//... 

아이는 부모에 weak 포인터가있을 수 있습니다.

관련 문제