removeFromSuperview由于某种原因用UIImageView替换对象?

问题描述:

我已经通过我的代码中分配的每一件东西,并给它一个-1的标签,除了使用标签系统的图标。所以这是我的代码:removeFromSuperview由于某种原因用UIImageView替换对象?

NSLog(@" 1: %@", (Icon *)[self viewWithTag:index]); 
    Icon *icon = (Icon *)[self viewWithTag:index]; 
    CGRect frame = icon.frame; 
    [icon removeFromSuperview]; 
    icon = nil; 

    Icon *icon2 = [[Icon alloc] init]; 
    [icon2 makeIconStandardWithTag:(int)index]; 
    icon2.frame = frame; 
    [self addSubview:icon2]; 

    NSLog(@" 2: %@", (Icon *)[self viewWithTag:index]); 

NSLog 1将对象返回为图标。 NSLog 2将对象返回为UIImageView,尽管我为每个UIImageView彻底搜索代码并给它一个-1标签。通过移动NSLog 2,我发现这行[icon removeFromSuperview];是这里的问题。如果不包括该行,则不会发生。但显然我需要从超级视图中删除它,并且.alpha = 0是太多的修补修复程序。

您为标签使用什么值?如果我使用的值太低,我有时会遇到麻烦(我假设UIKit正在使用该标记值)。

尝试将index设置为某个随机大数。

此外,为什么不只是使用实例变量来引用图标?然后,您将不必乱七八糟地根据标签识别图标。

+0

它只发生在索引0上。 – Andrew 2011-05-24 00:21:21

+0

那么这可能是你的问题。不应有任何理由必须使用标记值0.您是否可以尝试使用较大的值。 – CharlieMezak 2011-05-24 00:22:16

+0

我有一堆从数组中加载的对象,并且从0开始。我不想将其更改为arrayindex + 1,然后在用户按下它以找出时再次将其更改回来哪一个打开。 – Andrew 2011-05-24 00:28:52