我需要根据在初始化View时设置的属性来更改我的一个视图的背景。 这可能吗? 我已经将背景设置为UIImageView,如果我将它设置为Interface Builder中的Image,它可以工作,但我不能以编程方式更改背景。
这是我正在使用的代码(我基于将图像加载到UITableCell的教程):
+ (void) initialize {
/* The threat level images are cached as part of the class,
so they need to be explicitly retained.
*/
redLevel = [[UIImage imageNamed:@"red.png"] retain];
yellowLevel = [[UIImage imageNamed:@"yellow.png"] retain];
greenLevel = [[UIImage imageNamed:@"green.png"] retain];
}
-(id) initWithThreatLevel:(NSInteger) threatLevel {
if (self = [super initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]]) {
switch (threatLevel) {
case 1:
self.threat_levelImageView.image = greenLevel;
break;
case 2:
self.threat_levelImageView.image = yellowLevel;
break;
case 3:
self.threat_levelImageView.image = redLevel;
break;
default:
self.threat_levelImageView.image = greenLevel;
break;
}
}
return self;
}
答案 0 :(得分:4)
您应该将这些分配移动到awakeFromNib方法。在initXXX时,通常尚未设置NIB连接。在awakeFromNib中,您可以保证已经设置了所有连接。
答案 1 :(得分:1)
确保threat_levelImageView是在Interface Builder中连接的IBOutlet。是的,不要使用+ initialize来加载图像。