无法使用以编程方式创建的图像视图覆盖从nib加载的图像视图

时间:2012-08-27 22:49:21

标签: ios

我在xib中有一个包含UIImageView的视图。我正在设置要在xib中显示的图像,它会正确加载和显示。

但在某些情况下,我希望在运行时将加载的图像替换为另一个图像,所以我这样做:

NSArray* viewObjects  = [[NSBundle mainBundle] loadNibNamed:@"ParentView"owner:self options:nil];
id object = [viewObjects objectAtIndex:0];
parentView *parentView = (ParentView*)[viewObjects objectAtIndex:0];

UIImage *image = [UIImage imageNamed: @"iconName"];
UIImageView *iv = [[UIImageView alloc] initWithImage: image];
iv.frame = parentView.icon.frame;
parentView.icon = iv;

parentView.icon是一个UIImageView。图像变量不是nil,代码执行时也不是iv。

iconName是一个名为“iconName@2x.png”的.png,它位于我的项目中,如果我将它设置为.xib中的UIImageView,则会加载并正确显示。但是如果我在.xib中设置另一个图标并尝试在运行时用上面的代码替换它,那么它就不会被替换。

我无法弄清楚为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

您正在创建新的图像视图,但不将其添加到视图层次结构中。使用现有的图像视图并为其指定新的UIImage,或使用addSubview添加新创建的视图以查看层次结构。