我希望在第二个视图中出现的图像有这个但我看不到任何照片我不知道为什么。我这样做了:
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 。
答案 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