根据属性更改在iPhone应用中查看背景

时间:2009-11-03 20:59:44

标签: iphone objective-c

我需要根据在初始化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;
}

2 个答案:

答案 0 :(得分:4)

您应该将这些分配移动到awakeFromNib方法。在initXXX时,通常尚未设置NIB连接。在awakeFromNib中,您可以保证已经设置了所有连接。

答案 1 :(得分:1)

确保threat_levelImageView是在Interface Builder中连接的IBOutlet。是的,不要使用+ initialize来加载图像。