我想在运行时设置一个图像作为我的背景,所以我创建了一个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
不再得到"零"——但在这种情况下,我显然不再使用出口创建的UIImageView
了。我没有看到上面的代码有问题,特别是因为我在类似的 Stack Overflow 线程中看到的所有建议都是完全相同的:"只需使用 setImage 方法";任何想法可能是什么问题?
PS:只是为了澄清这一点 - 我尝试使用不同的图像,包括.png和.jpg,如果我例如将它们设置为我的ScrollView
的子视图,它们都可以工作,但在尝试在上面的代码中使用它们时就不行了。因此,图像文件应该不会造成任何问题。
似乎您将此代码放置在加载视图和连接插座之前执行的方法中(例如,在 init...
中)。尝试将其放在 viewDidLoad
.在加载视图之前(即在访问viewDidLoad
视图之前),您无法访问视图出口。
另外,这一行:
[image release];
是内存管理错误(过度发布)。