目前我正在使用AVCaptureMetadataOutputObjectsDelegate,使用故事板创建的方法向用户呈现数据。但是,当我从另一个视图控制器调用一个方法在两者之间传递数据时,我可以很好地检索数据并相应地对其进行 NSLog,但根本无法分配或更新视图控制器的任何属性。即更新标签文本,移动UIView等...代码如下所示,
- (void) retrieveObject: (ScannedItem *) object
{
if(object == NULL)
nil;
else
self.scannedObject = object;
NSLog(@"RETRIEVED IN V2: %@", self.scannedObject.itemName);
[self performSelector:@selector(animateResults:) withObject:self afterDelay:0];
}
- (void) refreshBarcode: sender
{
NSLog(@"%@", detectionString);
if(detectionString != nil)
{
[self performSelector:@selector(retrieveOnlineData:) withObject:self afterDelay:0];
}
}
- (void) animateResults: sender
{
self.productName.text = @"Hey";
if(resultsViewExpanded == YES)
{
NSLog(@"hiding");
[UIView animateWithDuration:0.5 animations:^{
self.resultsView.frame = CGRectMake(0, 531, self.resultsView.frame.size.width, self.resultsView.frame.size.height);
}];
resultsViewExpanded = NO;
}
else
{
NSLog(@"showing");
self.productName.text = [NSString stringWithFormat:@"%@", self.scannedObject.itemName];
[UIView beginAnimations:@"ShowButtons" context:nil];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.5];
self.resultsView.frame = CGRectMake(0, 364, self.resultsView.frame.size.width, self.resultsView.frame.size.height);
[UIView commitAnimations];
resultsViewExpanded = YES;
}
}
忽略可怕的格式,我不知道我在用它做什么。提前感谢您的任何支持。:)
我认为
,您正在更新,在查看第二个控制器加载之前修改属性。在视图加载之前,如果更新任何内容,它将不会反映,因为属性的更新将在控制器导航后调用。