在prepareForSegue中设置UIImageView.image

时间:2012-07-17 03:29:44

标签: objective-c

我想要使用具有UIImageView的photoViewController。 在flickrTVC中,我说:

-(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是白色的...为什么会这样?

2 个答案:

答案 0 :(得分:10)

在源视图控制器收到prepareForSegue:sender:消息时,目标视图控制器尚未加载其视图层次结构。因此,目标VC的_imageView变量为nil

推荐的方法是将图像(或者甚至更好的图像文件名)存储为目标VC的属性,然后在目标VC的viewDidLoad或{{中设置图像视图的图像1}}方法。

答案 1 :(得分:0)

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