RemoveFromSuperview具体视图

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

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

所以,我的myStickerView上可以有很多myStickerView

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

我怎样才能删除所有myStickerViewmyStickerView )?

最简单的方法是这样的:

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

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

最简单的方法是有一个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]; } 

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