在prepareForSegue中设置UIImageView.image

Krz*_*iek 4 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];
    }
}
Run Code Online (Sandbox Code Playgroud)

并且setDisplayedPhoto方法的实现是:

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

但是当我做segue时,UIImageView是白色的......为什么会这样呢?

rob*_*off 10

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

建议的方法是将图像(或者甚至更好的图像文件名)存储为目标VC的属性,然后在目标VC viewDidLoadviewWillAppear:方法中设置图像视图的图像.