RemoveFromSuperview具体视图
我使用下面的方法添加一些UIViews到我的视图:
[self.view addSubview:myStickerView]; // this line is called every time when I select a button from ScrollView.
所以,我的myStickerView
上可以有很多myStickerView
。
现在,当我调用这一行: [myStickerView removeFromSuperview];
它只会删除我最后一个myStickerView
。
我怎样才能删除所有myStickerView
( myStickerView
)?
最简单的方法是这样的:
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)]来实现结果。