我正面临这个无法解决的问题,很乐意得到您的帮助。
我有一个使用 ZBar 条形码扫描仪的 iphone 应用程序。我有一个主视图控制器,它在按下 UIButton 时调用 ZBar 扫描仪。一旦扫描仪启动并检测到条形码编号,它就会自行关闭,我调用结果视图控制器来显示一些扫描结果。我的问题是关闭结果视图控制器 - 由于某种原因,我无法关闭它并以干净的方式返回主视图控制器。我的工作是创建一个主视图控制器的新对象并调用它,这是一个非常糟糕的设计。
这是我的代码-感谢任何帮助!
在主视图控制器中的某处调用扫描仪(UIButton 操作方法):
ZBarReaderViewController *reader = [ZBarReaderViewController new];
UINavigationController *navCntrl1 = [[UINavigationController alloc] initWithRootViewController:reader];
reader.readerDelegate = self;
reader.title = @"Scan Barcode";
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner *scanner1 = reader.scanner;
[scanner1 setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];
[scanner1 setSymbology: ZBAR_QRCODE config: ZBAR_CFG_ENABLE to: 0];
[self presentModalViewController:navCntrl1 animated:YES];
主 ViewController 中的 Scanner Delegate 方法:
//ZBarSDK Finish Scanning
- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
// EXAMPLE: do something useful with the barcode data
[self dismissModalViewControllerAnimated: YES];
//Calling the Results view controller
Results *resultsViewController = [[Results alloc] initWithNibName:nil bundle:nil];
resultsViewController.tempBarcode = barcode;
UINavigationController *resultsNavigationController = [[UINavigationController alloc] initWithRootViewController:resultsViewController];
resultsNavigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[[[UIApplication sharedApplication]delegate].window setRootViewController:resultsNavigationController];
}
这里有一个地方说我试图替换:
[[[UIApplication sharedApplication]delegate].window setRootViewController:resultsNavigationController];
和:
[self presentModalViewController:resultsViewController animated:YES];
但如果我这样做,什么也不会发生。
从结果视图控制器中,我这样做是为了返回主视图控制器:
ViewController *mainViewController = [[ViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
mainNavigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:mainNavigationController animated:YES];
而不仅仅是这个,它不起作用:
[self dismissModalViewControllerAnimated:YES];
谢谢你的耐心!