私はこの解決不可能な問題に直面しており、喜んでそれを手助けします。ZBarReaderViewController、ビューコントローラの階層など
私は、ZBarバーコードスキャナを使用するiphoneアプリを持っています。私は、UButtonを押すとZBarスキャナを呼び出すメインのViewControllerを持っています。スキャナが起動してバーコード番号を検出すると、バーコード番号が消滅し、スキャンの結果を示す結果ビューコントローラが呼び出されます。私の問題は、結果のviewcontrollerを却下することです。何らかの理由で、私はそれを消して、メインビューコントローラにきれいに戻ってきます。私の回避策は、メインビューコントローラの新しいオブジェクトを作成し、それを呼び出すことでした。これは本当に悪いデザインです。
ここに私のコードです - 何か助けてくれてありがとう!メインのViewController(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内のスキャナのデリゲートメソッド:ここ
//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];
With:
[self presentModalViewController:resultsViewController animated:YES];
私はそうしても何も起こりません。私は、メインビューコントローラに戻ってこれを行うのViewController結果の中から、
:代わりに、ちょうどこのの
ViewController *mainViewController = [[ViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
mainNavigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:mainNavigationController animated:YES];
、仕事はdoesntの:忍耐のため
[self dismissModalViewControllerAnimated:YES];
感謝を!
私のデリゲートメソッド - (void)imagePickerController:(UIImagePickerController *)picker didFinish PickingMediaWithInfo:(NSDictionary *)infoが呼び出されていません。どんな助け? – Nil