遇到一个奇怪的问题。在我的HomeViewController.m文件的prepareForSegue方法中,我这样做:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UIButton *)sender {
StarViewController *nextViewController = segue.destinationViewController;
nextViewController.title = segue.identifier;
if ([segue.identifier isEqualToString:@"redDwarfSegue"]) {
//nextViewController.view.backgroundColor = [UIColor redColor];
nextViewController.starImage = [UIImage imageNamed:@"image1"];
} else {
nextViewController.view.backgroundColor = [UIColor blueColor];
nextViewController.starImage = [UIImage imageNamed:@"Image2"];
}
}
在StarViewController.h中,我有一个名为starImage的UIImage类型的属性,在上面的代码中引用。
最后,在我的StarViewController.m文件中,我有一个名为starImageView的UIImageView类型的属性,我所做的就是:
-(void) viewDidLoad {
self.starImageView.image = self.starImage;
self.starImageView.contentMode = UIViewContentModeScaleAspectFill;
}
在我的HomeViewController.m的prepareForSegue方法中,我故意注释掉这一行:
//nextViewController.view.backgroundColor = [UIColor redColor];
当epiged进入viewcontroller时,image1会很好地加载,但是image2却没有。我看到的只是蓝色背景色。如果我要注释掉bg颜色的设置或翻转这两行的顺序:
nextViewController.view.backgroundColor = [UIColor blueColor];
nextViewController.starImage = [UIImage imageNamed:@"Image2"];
对此:
nextViewController.starImage = [UIImage imageNamed:@"Image2"];
nextViewController.view.backgroundColor = [UIColor blueColor];
然后它工作,图像显示正确。这是一个错误吗?或者这是操作和视图的顺序以及如何在屏幕上绘制事物的问题?如果这还不够清楚,我很难道歉,我很难说出具体问题是什么。
谢谢!
答案 0 :(得分:2)
我相信这种情况正在发生,因为当您访问StarViewController的视图(使用nextViewController.view.backgroundColor
)时,这会导致执行viewDidLoad。如果设置图像值的行在该行之后,那么当viewDidLoad运行时,starImage将为nil。