1

我有 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];
4

2 回答 2

1

试试这个方法

- (void)removeAllLabels
{
    for (UIView *view in self.view.subviews)
    {
        if ([view isKindOfClass:[UILabel class]])
        {
            [view removeFromSuperview];
        }
    }
}
于 2013-05-30T07:57:30.403 回答
0

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

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

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

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

于 2013-05-30T07:55:18.373 回答