2013-02-19 2 views
0

나는 하나의보기에서 바코드 스캐너를 사용하고 사용자가 바코드를 스캔 한 후에 바코드 텍스트 필드가 미리 채워진 다른보기 (BoilerDetails)로 이동합니다.발신자보기에서 UITextField의 텍스트 설정

나는 viewcontroller가 보이지 않을 때 null이며 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'를 추가하십시오. –

답변

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 to good이라고 쓰면됩니다. 모든

0

첫째,이 자체가 세터를 호출

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

self.barcode = strBarcode; 잘못된 것입니다. 이 전

//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]; 
    } 
} 

을 그리고 당신은 확인 될 것입니다 :

당신이 쓰는 shud 당신의 iOS 버전에 따라 달라집니다.

관련 문제