2013-02-19 36 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]; 
    } 
} 

你會好起來的。