2013-01-10 63 views
0

我正在使用源代码来加载/旋转/缩放/移动从blogUIImage用一个按钮删除许多UIImages

我需要一次删除所有图像与一个按钮,我想这一点:

[holderView removeFromSuperview]; 

但只能删除创建的不是所有的人的最后一个。

编辑

我在应用程序的另一个子视图,我不希望他们删除“按钮,的UIImageView,UIScrollView的..等”。

回答

0

我认为你可以使用的NSMutableArray来的UIView的

嵌入的商店名单该代码的.h

@property (nonatomic, retain) NSMutableArray *imgList; 

林.m文件

@synthesize imgList; 

视图加载后

NSMutableArray *imgList = [[NSMutableArray alloc] init]; 

在“imagePickerController:di dFinishPickingMediaWithInfo:”添加

[imgList addObject:holderView]; 

当你需要删除使用

for(UIView *tempView in imgList) { 
    [tempView removeFromSuperview]; 
} 
+0

不幸的是,在viewDidLoad中有一个警告显示我“未使用的变量imgList”,它在我尝试时没有做任何事情。 – Shamlan

+0

只需在@implementation后写** @ synthesize imgList; **。我编辑了我的答案。 – krotov

+0

@Shamlan我的答案对你有用吗? – krotov

0

试试这个代码

NSArray *viewsToRemove = [self.view subviews]; 
for (UIView *v in viewsToRemove) 
{ 
    [v removeFromSuperview]; 
} 

希望它可以帮助你

编辑: -

更有效地去除

NSArray *viewsToRemove = [self.view subviews]; 
    for (UIView *v in viewsToRemove) 
    { 
     NSArray *imagesToRemove = [v subviews]; 
     for (UIImageView *i in imagesToRemove) 
     { 
      [i removeFromSuperview]; 
     } 
     [v removeFromSuperview]; 
    } 

第二个编辑: -

NSArray *viewsToRemove = [self.view subviews]; 
    for (UIView *v in viewsToRemove) 
    { 
     NSArray *imagesToRemove = [v subviews]; 
     for (UIImageView *i in imagesToRemove) 
     { 
      i.image = nil; 
     } 
     //[v removeFromSuperview]; 
    } 
+0

...或者你可以只检查那种'UIView'类的一样:'在自我(UIView的* V。如果([v isKindOfClass:[UIImageView class]])[v removeFromSuperview];' – holex

+0

@holex你是否访问过上面提到的用户教程,在tutorial中有holderView是UIView,里面是添加UIImageView的,所以为保持内存效率,也应删除holderView和其子视图UIImageView的UIView。 –

+0

最大限度地减少它可以被写入的代码:[imagesToRemove makeObjectsPerformSelector:@selector(removeFromSuperview)] – alex