2

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

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


    }  

}

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

4

4 回答 4

0

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

于 2013-03-20T15:51:11.437 回答
0

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

于 2013-03-20T15:52:41.807 回答
0

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

- (void)viewDidLoad
{

 codedeString=[[NSString alloc] init];
}
于 2013-03-23T13:51:14.730 回答
0

尝试这样做,它曾经帮助我解决同样的问题(但使用 xibs)

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

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

希望这对您也有帮助。

于 2013-03-23T13:55:50.210 回答