RemoveFromSuperview特定视图

时间:2013-10-11 20:45:47

标签: ios objective-c

我使用以下方法在视图中添加了一些UIView:

[self.view addSubview:myStickerView]; // this line is called every time when I select a button from ScrollView.

所以,我的myStickerView可以有很多self.view

现在,当我拨打这一行时:[myStickerView removeFromSuperview];它只删除我的上一个myStickerView

如何删除所有UIViews(myStickerView)?

3 个答案:

答案 0 :(得分:4)

最简单的方法是:

for (UIView *view in self.view.subviews) {
    if ([view isKindOfClass:[MYStickerView class]) {
        [view removeFromSuperView];
    }
}

或者您可以存储所有插入的贴纸视图的参考,而不是通过每个子视图

答案 1 :(得分:3)

最简单的方法是使用NSMutableArray属性来跟踪贴纸视图。当您在视图中添加贴纸视图时,也可以将其添加到阵列中,这样当您想要删除所有贴纸视图时,您可以执行类似的操作

-(void)removeStickerViews
{
    for(StickerView *stickerView in self.myStickerViewArray)
    {
        [stickerView doSomething];
        [stickerView removeFromSuperview];
    }
    [self.myStickerViewArray removeAllObjects];
}

-(void)addStickerView:(StickerView *)inStickerView
{
    [self.myStickerViewArray addObject:inStickerView];
    [self.view addSubview:inStickerView];
}

答案 2 :(得分:0)

在数组中保持跟踪的想法很好,但我建议使用更优雅的[myArray makeObjectsPerformSelector:@selector(removeFromSuperview)]来实现结果。