不能推新视图控制器

时间:2011-11-01 15:14:25

标签: iphone ios xcode uiviewcontroller

所以我使用第三方库来扫描条形码 - shopsavvy。我想要做的是在扫描仪被解除后显示带有所有扫描条形码的新屏幕。我完成了(我认为非常简单)以下内容,但没有获得新屏幕,而是在扫描仪被解除后返回原始屏幕。

我做错了什么?

这是我的主视图控制器:

- (void) scannerViewController:(SKScannerViewController *)scanner didRecognizeCode:(SKCode *)code {
NSLog(@"didRecognizeCode = %@", code.rawContent);

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

[self dismissModalViewControllerAnimated:YES]; //We're done scanning barcodes so we should dismiss our modal view controller.

_codeInfoLabel.text = code.rawContent; 

[self showResults:code.rawContent];

}

我正在进入这个方法并且正在执行,但没有任何反应。

 - (void) showResults: (NSString *) barcode {

Results *resultsViewController = [[Results alloc] initWithNibName:nil bundle:nil];
resultsViewController.tempBarcode = barcode;
UINavigationController *resultsNavigationController = [[UINavigationController alloc] initWithRootViewController:resultsViewController];
resultsNavigationController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:resultsNavigationController animated:YES];

}

2 个答案:

答案 0 :(得分:1)

我能让这种类型的东西工作的唯一方法是在扫描仪视图被解除时弹回原始控制器。

然后,在“视图将出现”中检查扫描过程中设置的某种类型的状态,可以在prefs中设置,例如“scanner complete complete”。如果是,请启动结果显示。

答案 1 :(得分:0)

当然直接弹出结果页面而不是解雇它然后加载新视图更有意义。

[self.navigationController popToViewController:resultsViewController animated:YES];