如何从子视图中删除nsmutablearray的对象?

时间:2013-05-30 07:43:09

标签: iphone ios nsmutablearray

我有nsmutablearray,其中我保存了一些字符意味着字母表现在我想要的是什么 在屏幕上将这些对象显示为子视图。我很容易做到这一点。他们通过循环这样做..我逐个访问数组对象,我可以将其添加为子视图,但现在无法从超级视图中删除这些。 我想删除这些标签。我怎么能这样做?

UILabel *myLabel;
UIImageView *image;

for (int j = 0; j<[intValues count];j++) {
   image = [allGridImages objectAtIndex:j];
    image.userInteractionEnabled=NO;
    image.multipleTouchEnabled=NO;
    image.image= [UIImage imageNamed:@"box-1.png"];

    title = [allGridBoxesTitle objectAtIndex:j];
    myLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 1, 45, 45)];
    myLabel.text = [allGridBoxesTitle objectAtIndex:j];
    myLabel.textColor = [UIColor grayColor];
    myLabel.font = [UIFont boldSystemFontOfSize:26.0f];
    myLabel.backgroundColor = [UIColor clearColor];
    [image addSubview:myLabel];

2 个答案:

答案 0 :(得分:1)

试试这个方法

- (void)removeAllLabels
{
    for (UIView *view in self.view.subviews)
    {
        if ([view isKindOfClass:[UILabel class]])
        {
            [view removeFromSuperview];
        }
    }
}

答案 1 :(得分:0)

您可以在添加新标签之前执行此操作:

[image.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

这将指示任何子视图自行删除。

但是,这取决于UIImageView在当前版本的iOS中没有任何子视图这一事实,这可能并非总是如此。最好实际跟踪这些标签,并在完成这些标签后专门删除它们,或者甚至重复使用它们,而不是每次都重新制作它们。