0

我在包含 UIImageView 的 xib 中有一个视图。我正在设置要在 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。image 变量不是 nil,在代码执行时 iv 也不是。

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

我不知道为什么这不起作用。

4

1 回答 1

0

您正在创建一个新的图像视图,但不要将其添加到视图层次结构中。要么使用现有的图像视图并为其分配一个新的视图,UIImage要么将新创建的视图添加到使用addSubview.

于 2012-08-27T22:53:53.667 回答