arn*_*orn 2 xcode interface-builder uiimageview iboutlet ios
我想在运行时将图像设置为我的背景,所以我在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));
Run Code Online (Sandbox Code Playgroud)
给我以下 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
Run Code Online (Sandbox Code Playgroud)
所以基本上我可以加载我的图像,但我无法将其设置为图像UIImageView.如果我包括以下行
backGroundImage = [[UIImageView alloc]init];
Run Code Online (Sandbox Code Playgroud)
我不再为我的'nil' backGroundImage.image- 但在那种情况下我显然不再使用UIImageViewOutlet创建的了.我没有看到上面代码的问题,特别是因为我在类似Stack Overflow线程中看到的所有建议完全相同:"只需使用setImage方法"; 任何想法可能是什么问题?
PS:只是为了澄清一下 - 我尝试使用不同的图像,包括.png和.jpg,如果我将它们设置为我的子视图,它们都可以工作ScrollView,但是在上面的代码中尝试使用它们时却没有.因此图像文件不应该造成任何问题.
您似乎将此代码放在一个方法中,该方法在视图加载和连接出口之前执行(例如,在init...).尝试放入viewDidLoad.在加载视图之前(即viewDidLoad访问之前),您无法访问视图出口.
另外,这一行:
[image release];
Run Code Online (Sandbox Code Playgroud)
是内存管理错误(overrelease).