我有一点问题,因为我无法将数据传递给另一个视图控制器。
-(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;
}
}
那么我该如何解决这个问题?
答案 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;
希望这对你也有帮助。