删除以编程方式添加的UIImageView

时间:2012-12-12 12:26:59

标签: iphone xcode uiimageview removeall

我正在制作一个在主视图中有2个按钮的程序;

一个叫做show而另一个叫hide,

当用户按下show butoon时,会将imageview添加到屏幕

代码:

-(IBAction)show{
  UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 155, 155)];
  img.image = [UIImage imageNamed:@"icon.png"];
  [self.view addSubview:img];
}

当用户按下隐藏按钮时,我希望app隐藏刚刚添加的图像(img)

但是...

当我使用

-(IBAction)add{
  [img removeFromSuperView];
}

Xcode说“img Undecleared”

编辑:有人说将对象定义为公共对象(@property),但问题是imageview只添加一次。但我希望每次用户按下“显示”按钮

时添加新的imageview

所以我用[[self subviews] objectAtIndex:xx] removeFromSuperview]方法来解决问题

4 个答案:

答案 0 :(得分:6)

为您的图片视图设置tag&那么你可以通过这个标签得到它。

[img setTag:123];

...

[[self.view viewWithTag:123] removeFromSuperview];

答案 1 :(得分:3)

UIImageView文件中创建.h的对象,如下面的..

UIImageView *img;

并在.m文件viewDidLoad:方法中添加它,如下所示..

- (void)viewDidLoad
{
    ///your another code
    img = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 155, 155)];
    img.image = [UIImage imageNamed:@"icon.png"];
    img.hidden = YES;
    [self.view addSubview:img];
}

当显示按钮按下时显示图像

-(IBAction)show{
    img.hidden = NO;
    [self.view bringSubviewToFront:img];
}

而对于隐藏就像吼叫一样......

-(IBAction)add{
    img.hidden = YES;
}

答案 2 :(得分:0)

使这个UIImageView成为你的UIViewController类的成员

答案 3 :(得分:0)

你的img对象只在show方法中可见而不在外面......这就是为什么。在外面宣布它,你的问题就会解决。