UIImage和prepareforSegue没有传递图像

时间:2014-01-23 15:07:36

标签: ios uiimageview uiimage segue

我希望在第二个视图中出现的图像有这个但我看不到任何照片我不知道为什么。我这样做了:

FirstClassViewController.m:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        if ([[segue identifier] isEqualToString:@"ShowCover"]) {
            MovieImageViewController *photo = [segue destinationViewController];       
            photo.cover.image = [UIImage imageNamed:@"helloWorld.jpg"];
            }
         }

SecondClassViewController.m:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self cover]; 
}

封面是我在 SecondClassViewController 上创建的属性 UIImageView

2 个答案:

答案 0 :(得分:6)

当您致电prepareForSegue:sender:时,目的地视图控制器的插座尚未设置。这意味着您的photo.cover属性仍为零。

您可以在UIImage上创建MovieImageViewController属性并执行以下操作:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        if ([[segue identifier] isEqualToString:@"ShowCover"]) {
            MovieImageViewController *photo = [segue destinationViewController];       
            photo.image = [UIImage imageNamed:@"helloWorld.jpg"];
        }
}

以及-viewDidLoad方法:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.cover.image = self.image;
}

答案 1 :(得分:2)

我猜测“cover”是MovieImageViewController类的图像视图属性?如果是这样,请不要这样做。

您应该将其他视图控制器视图视为私有。

而是在MovieImageViewController类中设置图像属性。在prepareForSegue方法中设置THAT,然后在MovieImageViewController的viewWillAppear:动画方法中,将图像安装到“封面”图像视图中。问题解决了。

编辑:澄清

将以下内容添加到MovieImageViewController类的标题(.h)文件中:

@interface MovieImageViewController

//This property is the line to add
@property (nonatomic, strong) UIImage *coverImage;

//your other stuff goes here.

@end

然后在你的.m文件中:

@implementation MovieImageViewController

- (void) viewWillAppear: animated
{
  [super viewWillAppear: animated];
  //Add the following code to your viewWillAppear:animated method
  if (self.coverImage != nil)
     self.cover.image = self.coverImage;
}

@end