4

我想继续使用具有 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;
}

但是当我继续时, UIImageView 是白色的......为什么会这样?

4

2 回答 2

10

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

推荐的方法是将图像(或者更好的是图像文件名)存储为目标 V​​C 的属性,然后在目标 VC 的viewDidLoadviewWillAppear:方法中设置图像视图的图像。

于 2012-07-17T03:51:19.090 回答
0

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

于 2013-10-27T10:32:46.667 回答