UIImageView setImage 不适用于 IBOutlet



我想在运行时设置一个图像作为我的背景,所以我创建了一个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];

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

相关内容

最新更新