我正在使用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。我沒有發佈任何代碼 –