UIImageView setImage不适用于IBOutlet

时间:2012-06-15 10:25:43

标签: ios xcode uiimageview interface-builder iboutlet

我想在运行时将图像设置为背景,因此我在Interface Builder中创建了UIImageView'backGroundImage'作为IBOutlet。但是以下代码:

    UIImage *image = [UIImage imageNamed:imageName];
    NSLog(@"image=nil %d",(image ==nil));
    NSLog(imageName);
    [self.backGroundImage setImage:image];
    NSLog(@"backgroundImage=nil %d",(self.backGroundImage.image ==nil));

给了我以下NSLogs

2012-06-15 12:09:43.967 iElster[1960:207] image=nil 0

2012-06-15 12:09:43.967 iElster[1960:207] bedroom-sketch-corel-eps-vector-art-1141.jpg

2012-06-15 12:09:43.968 iElster[1960:207] backgroundImage=nil 1

所以基本上我可以加载我的图像,但我无法将其设置为UIImageView的图像。如果我包含以下行

backGroundImage = [[UIImageView alloc]init];

我不再为我的backGroundImage.image获取'nil' - 但在这种情况下,我显然不再使用Outlet创建的UIImageView了。我没有看到上面代码的问题,特别是因为我在类似Stack Overflow线程中看到的所有建议完全相同:“只需使用setImage方法”;任何想法可能是什么问题?

PS:只是为了澄清 - 我尝试使用不同的图像,包括.png和.jpg,如果我这样做,它们都可以正常工作只需将它们设置为我的ScrollView的子视图,但不要在上面的代码中尝试使用它们时。所以图像文件不应该造成任何问题。

1 个答案:

答案 0 :(得分:5)

您似乎已将此代码放在执行的方法中视图加载并且连接了插座(例如,在init...中)。尝试将其放入viewDidLoad。在加载视图之前(即,在访问viewDidLoad之前),您无法访问视图出口。

此外,这一行:

[image release];

是内存管理错误(过度发布)。