我正在使用iOS应用程序。 我试图显示从AVFoundation,“BarcodeNum”检测到的字符串。但它没有正确显示。下面是我的代码Objective-C:显示另一个类的值
FirstViewController.h
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController
@property (strong, nonatomic) NSString *detectionString;
@property (strong, nonatomic) NSString *barcodeNum;
@end
FirstViewController.m
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
CGRect highlightViewRect = CGRectZero;
AVMetadataMachineReadableCodeObject *barCodeObject;
self.detectionString = nil;
NSArray *barCodeTypes = @[AVMetadataObjectTypeUPCECode, AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeCode39Mod43Code,
AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode93Code, AVMetadataObjectTypeCode128Code,
AVMetadataObjectTypePDF417Code, AVMetadataObjectTypeQRCode, AVMetadataObjectTypeAztecCode];
for (AVMetadataObject *metadata in metadataObjects) {
for (NSString *type in barCodeTypes) {
if ([metadata.type isEqualToString:type])
{
barCodeObject = (AVMetadataMachineReadableCodeObject *)[_prevLayer transformedMetadataObjectForMetadataObject:(AVMetadataMachineReadableCodeObject *)metadata];
highlightViewRect = barCodeObject.bounds;
self.detectionString = [(AVMetadataMachineReadableCodeObject *)metadata stringValue];
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Barcode Detected" message:self.detectionString preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* yes = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
FirstViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"new"];
[self presentViewController:vc animated:YES completion:nil];
}];
UIAlertAction* no = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {}];
[alert addAction:yes];
[alert addAction:no];
[self presentViewController:alert animated:YES completion:nil];
break;
}
}
if (self.detectionString != nil)
{
_label.text = self.detectionString;
self.barcodeNum = self.detectionString;
break;
}
else
_label.text = @"Barcode not found";
}
_highlightView.frame = highlightViewRect;
}
SecondView.m
#import "SecondView.h"
#import "FirstViewController.h"
#import <Foundation/Foundation.h>
@interface SecondView()
@property (strong, nonatomic) IBOutlet UILabel *label;
@end
@implementation SecondView
- (void)viewDidLoad
{
[super viewDidLoad];
FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
_label.text=[NSString stringWithFormat:@"%@",firstViewController.barcodeNum];
//Not displaying the barcode number detected
}
@end
您正在转向FirstViewController,然后您为什么要检查secondView中的条码值?你如何转向第二种观点? –
如果您想从其他类访问它们,您需要在.h文件中声明属性 –
@ Mr.T我正在通过AlertController按钮中的模态进行移动。我正在寻找将在FirstView中检测到的值显示在SecondView中的标签中。我在FirstView“h”文件中声明了barcodeNum。我没有发布任何代码 –