Ios 将字符串从viewcontroller1传输到viewcontroller2,并在uiwebview的文本框中显示条形码扫描(字符串)
我在一个viewcontroller中有一个条形码扫描仪,在第二个viewcontroller中有一个uiwebview。如何获取在第二个viewcontroller的第一个viewcontroller捕获中创建的字符串。我尝试了几种方法,并用nslog对其进行了测试,但字符串值总是显示为(nil)。请帮我摆脱这一切 这是我的密码: igViewController.m:Ios 将字符串从viewcontroller1传输到viewcontroller2,并在uiwebview的文本框中显示条形码扫描(字符串),ios,objective-c,barcode,Ios,Objective C,Barcode,我在一个viewcontroller中有一个条形码扫描仪,在第二个viewcontroller中有一个uiwebview。如何获取在第二个viewcontroller的第一个viewcontroller捕获中创建的字符串。我尝试了几种方法,并用nslog对其进行了测试,但字符串值总是显示为(nil)。请帮我摆脱这一切 这是我的密码: igViewController.m: #import <AVFoundation/AVFoundation.h> #import "igViewCon
#import <AVFoundation/AVFoundation.h>
#import "igViewController.h"
#import "ViewController.h"
@interface igViewController () <AVCaptureMetadataOutputObjectsDelegate>
{
AVCaptureSession *_session;
AVCaptureDevice *_device;
AVCaptureDeviceInput *_input;
AVCaptureMetadataOutput *_output;
AVCaptureVideoPreviewLayer *_prevLayer;
UIView *_highlightView;
}
@end
@implementation igViewController
@synthesize detectionString;
@synthesize delegate;
@synthesize thedetected;
- (void)viewDidLoad
{
[super viewDidLoad];
_highlightView = [[UIView alloc] init];
_highlightView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
_highlightView.layer.borderColor = [UIColor greenColor].CGColor;
_highlightView.layer.borderWidth = 3;
[self.view addSubview:_highlightView];
_label = [[UILabel alloc] init];
_label.frame = CGRectMake(0, self.view.bounds.size.height - 40, self.view.bounds.size.width, 40);
_label.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;
_label.backgroundColor = [UIColor colorWithWhite:0.15 alpha:0.65];
_label.textColor = [UIColor whiteColor];
_label.textAlignment = NSTextAlignmentCenter;
_label.text = @"(nichts)";
[self.view addSubview:_label];
_session = [[AVCaptureSession alloc] init];
_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
_input = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&error];
if (_input) {
[_session addInput:_input];
} else {
NSLog(@"Error: %@", error);
}
_output = [[AVCaptureMetadataOutput alloc] init];
[_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[_session addOutput:_output];
_output.metadataObjectTypes = [_output availableMetadataObjectTypes];
_prevLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session];
_prevLayer.frame = self.view.bounds;
_prevLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.view.layer addSublayer:_prevLayer];
[_session startRunning];
[self.view bringSubviewToFront:_highlightView];
[self.view bringSubviewToFront:_label];
}
-(void) viewWillAppear:(BOOL)animated{
if(detectionString!=nil){
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *top = [UIApplication sharedApplication].keyWindow.rootViewController;
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"Controller1"];
[top presentViewController:vc animated:YES completion:nil];
}
}
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
CGRect highlightViewRect = CGRectZero;
AVMetadataMachineReadableCodeObject *barCodeObject;
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;
detectionString = [(AVMetadataMachineReadableCodeObject *)metadata stringValue];
setSomeNumber:[(AVMetadataMachineReadableCodeObject *)metadata stringValue];
break;
}
}
if (detectionString != nil)
{
_label.text = detectionString;
// ViewController *otherViewController=[[ViewController alloc] init];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"Controller1"];
ViewController *otherViewController=[[ViewController alloc] init];
[otherViewController barcodeverarbeiten:detectionString];
NSLog(@"detectionstringssssss %@", detectionString);
[self presentViewController:vc animated:YES completion:nil];
break;
}
else
_label.text = @"(nichts)";
}
_highlightView.frame = highlightViewRect;
}
- (void)setSomeNumber:(NSString *)tempString {
_label.text = tempString;
}
-(NSString *) thedetected{
return _label.text;
}
@end
igViewController.h:
#import <UIKit/UIKit.h>
@class ViewController;
@interface igViewController : UIViewController{
ViewController *delegate;
@public
UILabel *_label;
NSString *detectionString;
//NSString *tempString;
}
@property (nonatomic, strong)NSString *detectionString;
@property (nonatomic, strong) ViewController *delegate;
@property (nonatomic, strong) NSString *thedetected;
//@property (nonatomic, strong)NSString *tempString;
- (void)setSomeNumber:(NSString *)tempString;
@end
#import <UIKit/UIKit.h>
#import "FavoritenController.h"
@class igViewController;
@interface ViewController : UIViewController <UITextFieldDelegate, UIWebViewDelegate, UIActionSheetDelegate>
{
UIWebView *Webseite;
UIBarButtonItem *backButton;
UIBarButtonItem *forwardButton;
UITextField *textField;
UIBarButtonItem *refreshButton;
NSString* urlBeforeEditing;
UIBarButtonItem *barcodescan;
igViewController *otherViewController1;
FavoritenController* favoritenController;
/* ..*/
}
@property (nonatomic, retain) IBOutlet UIBarButtonItem *barcodescan;
@property (nonatomic, strong) igViewController *otherViewController1;
@property (nonatomic, retain) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *onlinetauscher;
@property (nonatomic, retain) IBOutlet UIWebView *Webseite;
@property ( nonatomic, retain) IBOutlet UIBarButtonItem *refreshButton;
@property ( nonatomic, retain) IBOutlet UIBarButtonItem *backButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *forwardButton;
- (IBAction)onlinetauscher:(UIBarButtonItem *)sender;
- (IBAction)pressRefresh:(UIBarButtonItem *)sender;
//- (IBAction)search:(id)sender;
- (IBAction)zeigeMedikamente:(id)sender;
- (IBAction)hinzufuegen:(id)sender;
- (void)barcodeverarbeiten:(NSString*)barcodepzn;
@end
#导入
@类视图控制器;
@接口igViewController:UIViewController{
视图控制器*委托;
@公开的
UILabel*\u标签;
NSString*检测字符串;
//NSString*tempString;
}
@属性(非原子,强)NSString*detectionString;
@属性(非原子,强)ViewController*委托;
@属性(非原子,强)NSString*被检测;
//@属性(非原子,强)NSString*tempString;
-(void)setSomenNumber:(NSString*)tempString;
@结束
ViewController.h:
#import <UIKit/UIKit.h>
@class ViewController;
@interface igViewController : UIViewController{
ViewController *delegate;
@public
UILabel *_label;
NSString *detectionString;
//NSString *tempString;
}
@property (nonatomic, strong)NSString *detectionString;
@property (nonatomic, strong) ViewController *delegate;
@property (nonatomic, strong) NSString *thedetected;
//@property (nonatomic, strong)NSString *tempString;
- (void)setSomeNumber:(NSString *)tempString;
@end
#import <UIKit/UIKit.h>
#import "FavoritenController.h"
@class igViewController;
@interface ViewController : UIViewController <UITextFieldDelegate, UIWebViewDelegate, UIActionSheetDelegate>
{
UIWebView *Webseite;
UIBarButtonItem *backButton;
UIBarButtonItem *forwardButton;
UITextField *textField;
UIBarButtonItem *refreshButton;
NSString* urlBeforeEditing;
UIBarButtonItem *barcodescan;
igViewController *otherViewController1;
FavoritenController* favoritenController;
/* ..*/
}
@property (nonatomic, retain) IBOutlet UIBarButtonItem *barcodescan;
@property (nonatomic, strong) igViewController *otherViewController1;
@property (nonatomic, retain) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *onlinetauscher;
@property (nonatomic, retain) IBOutlet UIWebView *Webseite;
@property ( nonatomic, retain) IBOutlet UIBarButtonItem *refreshButton;
@property ( nonatomic, retain) IBOutlet UIBarButtonItem *backButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *forwardButton;
- (IBAction)onlinetauscher:(UIBarButtonItem *)sender;
- (IBAction)pressRefresh:(UIBarButtonItem *)sender;
//- (IBAction)search:(id)sender;
- (IBAction)zeigeMedikamente:(id)sender;
- (IBAction)hinzufuegen:(id)sender;
- (void)barcodeverarbeiten:(NSString*)barcodepzn;
@end
#导入
#导入“FavoriteController.h”
@类控制器;
@界面ViewController:UIViewController
{
UIWebView*Webseite;
UIBarButtonItem*后纽扣;
UIBarButtonItem*前进按钮;
UITextField*textField;
UIBarButtonItem*刷新按钮;
NSString*URLEBEFOREDITING;
UIBAButtonim*条码扫描;
igViewController*其他ViewController 1;
FavoriteController*FavoriteController;
/* ..*/
}
@属性(非原子,保留)IBUIBarbuttonItem*条码扫描;
@属性(非原子,强)igViewController*otherViewController1;
@属性(非原子,保留)IBOutlet UITextField*textField;
@性质(弱、非原子)IBUIBarbuttonite*onlinetauscher;
@属性(非原子,保留)IBUIWebView*Webseite;
@属性(非原子,保留)IBUIBarbuttonItem*刷新按钮;
@属性(非原子,保留)IBUIBarbuttonItem*backButton;
@属性(非原子,保留)IBUIBarbuttonItem*forwardButton;
-(iAction)onlinetauscher:(UIBarButtonItem*)发送方;
-(iAction)按刷新:(UIBarButtonItem*)发送方;
//-(iAction)搜索:(id)发件人;
-(iAction)zeigeMedikamente:(id)发送方;
-(iAction)hinzufuegen:(id)发送方;
-(无效)条形码VerarBeiten:(NSString*)条形码Pzn;
@结束
好的,现在开始工作了。我使用NSUserDefaults传递字符串,并在另一个ViewController中捕获它。干杯您使用过该属性吗?请上传.h文件好的,我上传了.h文件