我想在运行时将图像设置为背景,因此我在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
的子视图,但不要在上面的代码中尝试使用它们时。所以图像文件不应该造成任何问题。
答案 0 :(得分:5)
您似乎已将此代码放在执行的方法中视图加载并且连接了插座(例如,在init...
中)。尝试将其放入viewDidLoad
。在加载视图之前(即,在访问viewDidLoad
之前),您无法访问视图出口。
此外,这一行:
[image release];
是内存管理错误(过度发布)。