2013-02-19 37 views
0

我在一个视图上有一个条形码扫描仪,并且在用户扫描条形码后,应用程序将它们带到另一个视图(BoilerDetails),其中条形码文本字段已被预先填充。从来电视图设置UITextField的文本

据我所知,viewcontroller是空的,当它没有进入视图,我不能直接更改UITextField文本。这到目前为止给了我一个错误..我该如何解决这个问题?

BarcodeScannerViewController.m

BoilerDetailsViewController *viewCtrl = [[BoilerDetailsViewController alloc] initWithNibName:nil bundle:nil]; 
[viewCtrl setBarcode:strBarcode]; 
[self.navigationController pushViewController:viewCtrl animated:YES]; 

BoilerDetailsViewController.h

@interface BoilerDetailsViewController : SubViewControllerBase 
@property (retain, nonatomic) NSString *barcode; 
@property (retain, nonatomic) IBOutlet UITextField *barcodeField; 
- (void)setBarcode:(NSString*)strBarcode; 
@end 

BoilerDetailsViewController.m

-(void)setBarcode:(NSString *)strBarcode 
{ 
    self.barcode = strBarcode; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [_barcodeField setText:self.barcode]; 
    // Do any additional setup after loading the view from its nib. 
} 
+1

在'-setBarcode:'方法内添加'self.barcodeField.text = strBarcode' – 2013-02-19 14:51:52

回答

2
-(void)setBarcode:(NSString *)strBarcode 
{ 
    self.barcode = strBarcode; 
} 

我认为,这些字符串给你无限循环。按照你的逻辑,你应该使用:

-(void)setBarcode:(NSString *)strBarcode 
{ 
    self.barcodeField.text = strBarcode; 
} 

@syntesize barcode = _barcode; 

-(void)setBarcode:(NSString *)strBarcode 
{ 
    [_barcode autorelease]; 
    _barcode = [strBarcode retain] //in case of no ARC 
} 

取决于你想要什么(存储字符串或设置标签)。

0

你只需要合成barcode,然后在ViewDidload中只写这个代码[_barcodeField setText:barcode];和GO就好。

0

首先,这是错误的

-(void)setBarcode:(NSString *)strBarcode 
{ 
    self.barcode = strBarcode; 
} 

self.barcode = strBarcode;本身调用的二传手。

根据您的IOS版本,你shud写:

//for ARC environment 
-(void)setBarcode:(NSString *)strBarcode 
{ 
    _barcode = strBarcode; 
} 
//since default association in ARC is strong 

在此之前做@synthesize barcode = _barcode;

//and for non-ARC environment, since your property is retain type 
-(void)setBarcode:(NSString *)strBarcode 
{ 
    if (_barcode != barcode) { 
     [_barcode release]; 
     _barcode = [barcode retain]; 
    } 
} 

你会好起来的。