2013-11-26 58 views
1

我将数据从一个控制器传递到另一个控制器。UIImage返回零

TemplateController这是发送数据的一个看起来是这样的:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    PreviewController *destViewController = [[PreviewController alloc]init]; 
    destViewController.passFrameLabel = [self.frameImages[indexPath.section] objectAtIndex:indexPath.row]; 
    [self.collectionView deselectItemAtIndexPath:indexPath animated:NO]; 
    [destViewController loadFrame]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

我在我的PreviewControllerloadFrame方法是这样的:

UIImageView *frameImageView = [[UIImageView alloc] init]; 
[self.view addSubview:frameImageView]; 
self.frameImageView.image = [UIImage imageNamed:self.passFrameLabel]; 

调试self.passFrameLabel后包含正确值,但self.frameImageView.image返回nil。我错过了什么?

+0

'self.passFrameLabel'的值是什么?你确定图像在你的包中吗?写作是否正确(小心处理)? – KIDdAe

+0

你设置了frameImageView的框架吗? – thorb65

+0

@KIDdAe是的,我的图像在我的包中。 self.passFrameLable的值是文件的名称,这是一个实际在其类中正确显示的png文件(TemplateController) – Edu

回答

5

你似乎在创建frameImageView本地对象时,你的课也有frameImageView属性。您将UIImageView的本地对象添加为子视图,但将image分配给属性(该属性似乎未初始化)。

您应该修改代码,

//frameImageView should be a strong property 
_frameImageView = [[UIImageView alloc] init]; 
self.frameImageView.frame = CGRectMake(10,10,50,50); //Add suitable frame 
//Now assign image 
self.frameImageView.image = [UIImage imageNamed:self.passFrameLabel]; 
//Add this property as subview 
[self.view addSubview:self.frameImageView]; 

试试吧。

+0

很好捕获 –

+0

@Amar,看起来非常接近self.frameImageView.view是也不返回一个UIImage!但是当我使用手势识别器时,这个gestureRecognizer被称为“self.view”,并且UIImage没有被显示,但现在看起来很接近。 – Edu

+0

@Edu对不起,但不太明白你你的图片视图现在显示出来了吗?如果不是,你可以登录'self.passFrameLabel'并且尝试用'initWithContentsOfFile:'而不是'imageNamed:API'分配和初始化'UIImage'。 – Amar

0

首先要做的是 - 该文件名的图像是否存在于项目中,是否被复制到该目标包中?

+0

是的。图像存在。实际上它显示在TemplateController中。 – Edu

+0

嗯,在这种情况下,只是检查self.passFrameLabel正在返回您的预期图像的名称,除此之外,我可能会出来的想法:( – SomeGuy