2

我想在运行时将图像设置为我的背景,所以我在 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];

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

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

4

1 回答 1

5

似乎您将此代码放置在一个方法中,该方法在加载视图和连接出口之前init...执行(例如, in )。试着把它放在viewDidLoad. viewDidLoad在视图被加载之前(即在被访问之前),您不能访问您的视图出口。

另外,这一行:

[image release];

是内存管理错误(过度释放)。

于 2012-06-15T11:04:16.127 回答