我在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中设置另一个图标并尝试在运行时用上面的代码替换它,那么它就不会被替换。
我无法弄清楚为什么这不起作用。
答案 0 :(得分:0)
您正在创建新的图像视图,但不将其添加到视图层次结构中。使用现有的图像视图并为其指定新的UIImage
,或使用addSubview
添加新创建的视图以查看层次结构。