我想转到具有 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 是白色的......为什么会这样?

最佳答案

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

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

关于objective-c - 在 prepareForSegue 中设置 UIImageView.image,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11515643/

10-14 20:45