0

嗨,我的程序将小图像添加到主视图。我有这个撤消按钮来删除最近添加的图像(子视图)。当它有所有不同的图像时它工作正常,但是当有两个相同的图像时它会发生错误。我认为这是因为它都指向相同的原始 png 文件。但我不知道如何解决它。请给我一些提示。

add{  
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"pah%d",tagNum]];
    TouchImageView *touchImageView = [[TouchImageView alloc] initWithFrame:imageRect];
    imageCounter++;
    touchImageView.tag = imageCounter;
    touchImageView.image = image;
    touchImageView.center = CGPointMake(160.0, 230.0);
    [view addSubview:touchImageView];
}

undo{
       [[self.view viewWithTag:imageCounter] removeFromSuperview];
    imageCounter--;
}
4

2 回答 2

0

如果您只需要删除最近添加的图像...那么每次添加图像时都会像这样存储它的引用-它将与ARC很好地配合...

 UIImageView *imageView = touchImageView;

然后在您的删除最近添加的图像按钮中单击

 for(UIImageView *iV in view.subviews)
 {
    if(iV == imageView)
    {
       [iV removeFromSuperView];
    }
 }

我认为它会工作......

于 2012-06-30T12:27:56.017 回答
0

我怀疑这是您的问题,但 imageNamed:使用内部缓存系统将图像缓存在内存中。每次你要求[UIImage imageNamed:@"foo"]你得到相同的 UIImage 实例。

您可能希望使用imageWithContentsOfFile:它来返回 UIImage 的唯一实例。

尝试一下,看看它是否有所作为。

于 2012-06-30T09:47:57.087 回答