gpt4 book ai didi

ios - Redlaser SDK 和 nil 模态视图 Controller

转载 作者:行者123 更新时间:2023-12-01 16:47:02 25 4
gpt4 key购买 nike

自从升级到 XCode 5/iOS 7 后,在调用应该呈现 Redlaser SDK 条形码选择器 Controller 的函数时出现以下错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“应用程序试图在目标上呈现一个 nil 模态视图 Controller 。”
* 首先抛出调用栈:

(

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

这是我的方法导致它:
-(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,还是一样的错误。在切换到 iOS 7 作为基础 SDK 之前,我没有遇到这个问题。

最佳答案

我唯一能想到的是picker ( parent )可能会超出范围并被释放。在错误行之前进行测试以检查父级是否仍然存在:if(overlayController.parentPicker == nil) NSLog(@"Parent is nil");
如果真的是nil (就像你原来的错误所说的那样),尝试声明 picker 之前 第一个if陈述。

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

child 可能只有 weak指向父级的指针,因此您可能需要将父级声明为 @property或在您的 viewController 之前不会被释放的地方从堆栈中弹出。

关于ios - Redlaser SDK 和 nil 模态视图 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19167926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com