无法将数据传递到另一个视图控制器ios

时间:2013-03-20 15:23:27

标签: iphone ios ios6 uiviewcontroller segue

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

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

在上面的代码中,我在字符串codeString1中放置了一个条形码。到目前为止没问题,但是当我将这些数据发送到另一个viewController时,barCodeString突然变为NULL。

我将数据传递给viewcontroller,如下所示:

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


    }  

}

那么我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

我假设code1是文本字段,文本视图或标签。如果是这样,那么这个不起作用的原因是,在准备塞片时,主要的出口尚未设定。您需要在main中创建一个字符串属性,并将其值设置为prepareForSegue中的code1String。然后,在main的viewDidLoad或viewDidAppear中,将code1的文本值设置为该字符串。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在视图控制器的viewDidLoad中执行此操作,然后它可以正常工作

- (void)viewDidLoad
{

 codedeString=[[NSString alloc] init];
}

答案 3 :(得分:0)

尝试这样做,它帮助我一次同样的问题(但使用xibs)

在任何作业之前再添加一行

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

希望这对你也有帮助。