我使用以下方法在视图中添加了一些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
)?
答案 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)]来实现结果。