从超级视图中删除它时不会消失的UIImage

时间:2011-12-30 13:30:12

标签: objective-c uiviewcontroller ios5 imagenamed

在iOS 5下,我遇到以下问题:每次在应用程序中挑选新产品时,都会在控制器上调用以下代码。它在控制器视图中显示功能的项目符号列表。

每个项目符号都是添加在正确位置(相应文本前面)的图像。

现在,问题在于,有时候,显然是随机的,一些子弹不会从之前的子弹列表中删除,尽管我在方法开头从超级视图中删除它。

  - (void) loadProduct{
    for (UIView * bullet in bullets){
        bullet.hidden = YES;
        [bullet removeFromSuperview];
    }
    [bullets removeAllObjects];
    [self.view setNeedsDisplay];


   ......here some stuff ......


    for (int i=0;i< numberOfFeatures;i++)
    {   

            UIImageView * bullet = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bullet.png"]];
            bullet.frame =CGRectMake(someFloatValue ,
                                     someOtherFloatValue,
                                     6,
                                     6);
            [self.view addSubview:bullet];

            [bullets addObject:bullet];
            [bullet release];

        }
    }

bullets是一个NSMutableArray,是控制器的一个属性。

我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

bullets中,您似乎只存储标签:

[bullets addObject:label];

因此,当从bullets删除所有内容时,您只需从超级视图中删除标签,子弹(UIImageView控件)就会保留在那里。

如果您创建自定义控件(包含项目符号和标签的视图)并使用这些控件可能会更容易