-1

我使用以下方法将一些 UIViews 添加到我的视图中:

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

所以,我myStickerViewself.view.

现在,当我调用此行时:[myStickerView removeFromSuperview];它只会删除我的最后一个myStickerView.

如何删除所有 UIViews ( myStickerView)?

4

3 回答 3

4

最简单的方法是这样的:

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

或者您可以存储所有插入的贴纸视图的引用,而不是遍历每个子视图

于 2013-10-11T20:51:10.073 回答
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];
}
于 2013-10-11T20:50:02.863 回答
0

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

于 2013-10-12T03:02:45.383 回答