2013-03-20 136 views
2

我有一点问题,因为我无法将数据传递给另一个视图控制器。无法将数据传递给其他viewController ios

-(void)barcodeData:(NSString *)barcode type:(int)type 
{ 
    mainTabBarController.selectedViewController=self; 

    [status setString:@""]; 

    [status appendFormat:@"Type: %d\n",type]; 
    [status appendFormat:@"Type text: %@\n",[dtdev barcodeType2Text:type]]; 
    [status appendFormat:@"Barcode: %@",barcode]; 
    [displayText setText:status]; 
    codede1String = barcode; 
    NSLog(@"%@",codede1String); 


    [self updateBattery]; 
} 

在上面我的代码把条形码在String codeString1。到目前为止没有问题,但是当我将这个数据发送给另一个viewController时,barCodeString突然变为NULL。

我将数据传递给视图控制器是这样的:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"barcode"]) { 
     main =[ segue destinationViewController]; 
     main.code1.text = codede1String; 


    } 

} 

那么,如何解决这个问题?

+1

试着在调试器的帮助下理解你的代码。 – dasdom 2013-03-20 15:26:31

回答

0

在视图控制器的viewDidLoad中做到这一点,那么它工作正常

- (void)viewDidLoad 
{ 

codedeString=[[NSString alloc] init]; 
} 
0

我假设code1是一个文本字段,文本视图或标签。如果是这样,这是行不通的原因是主要的网点尚未在prepareForSegue时间设置。您需要在main中创建一个字符串属性,并将其值设置为prepareForSegue中的code1String。然后,在main的viewDidLoad或viewDidAppear中,将code1的文本值设置为该字符串。

0

请注意,目标视图控制器的IBOutlets尚未在prepareForSegue中设置。因此,如果main.code1代表UILabel,则它将为零,因为视图尚未加载。您应该使用setter方法直接传递字符串:[main setCodeString:codede1String],然后在viewDidLoadself.code1.text = [self codeString]中配置用户界面。

+0

code1.text是一个文本框 我试过这个[main setBarcodeString:codede1String];并在viewDidLoad中的其他视图控制器中,我做到了这一点self.code1.text = [self barcodeString];但问题是理智的 – Thymen 2013-03-20 16:17:58

0

尝试这样做,帮我一次,同样有点问题(但xibs)

再添加一个线,就在任何作业之前

[main.view setAlpha:1.0f]; 
main.code1.text = codede1String; 

希望这对你也有帮助。

相关问题