我正在使用检测QR码的XCode 4.2开发应用程序。
我正在尝试在QR码检测后进行切换视图,但它根本无法正常工作
这是我正在使用的代码:
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
// ADD: get the decode results
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
NSString *string=symbol.data;
NSString *string2=@"1234";
if ([string isEqualToString:string2]) {
//this is the part that is not working : it doesn t load the AboutView at all
AboutView *about = [[AboutView alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:about animated:YES];
}
else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"This is not a recognized QR code!"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
// ADD: dismiss the controller (NB dismiss from the *reader*!)
[reader dismissModalViewControllerAnimated: YES];
}
感谢
答案 0 :(得分:0)
问题是读者是zbar示例代码中提供的视图控制器
-(void)presentReaderInViewController:(UIViewController*)vc
并且你正在将自己视为呈现
您应该使用reader
来展示您的AboutView
,并仅在其他区块中解除reader
if ([string isEqualToString:string2]) {
//this is the part that is not working : it doesn t load the AboutView at all
AboutView *about = [[AboutView alloc] initWithNibName:nil bundle:nil];
[reader presentModalViewController:about animated:YES];
}
else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"This is not a recognized QR code!"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
// ADD: dismiss the controller (NB dismiss from the *reader*!)
[reader dismissModalViewControllerAnimated: YES];
}
您可能还想等待在警报视图的委托方法中解除reader
(创建一个软参考并关闭... myReader = reader;当您设置警报视图时)
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
[myReader dismissModalViewControllerAnimated: YES];
}