2012-07-17 43 views
4

我想继续使用具有UIImageView的photoViewController。 在flickrTVC,我说:在prepareForSegue中设置UIImageView.image

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"showPhoto"]) 
    { 
     photoViewController *vc = [segue destinationViewController]; 
     UIImage *photo = [UIImage imageWithContentsOfFile:@"images/en.jpeg"]; 
     [vc setDisplayedPhoto:photo]; 
    } 
} 

和setDisplayedPhoto方法的实现是:

-(void)setDisplayedPhoto:(UIImage *)image 
{ 
    [_imageView setImage:image]; //@property (nonatomic, strong) IBOutlet UIImageView *imageView; 
} 

但是当我做SEGUE的UIImageView的是白色的......为什么会这样?

+1

您的图像路径可能是错误的。测试'photo == nil' – 2012-07-17 03:42:01

回答

10

您的目标视图控制器在您的源视图控制器收到prepareForSegue:sender:消息时尚未加载其视图层次结构。所以你的目标VC的_imageView变量是nil

建议的方法是存储图像(或者,甚至可能更好,图像文件名)作为目的地VC的属性,然后设置图像视图的图像中的目的地VC的viewDidLoadviewWillAppear:方法。

0

在设置视图的o之前调用[vc视图]