如何从超级视图中删除子视图并单击按钮单击重新绘制?

问题描述:

如何从超级视图中删除子视图并点击按钮点击重绘?如何从超级视图中删除子视图并单击按钮单击重新绘制?

float padding = 5.0; 
     float view_width = 95.0; 
     float view_height = 120.0; 
     int rows = 0.0f; 
     int columns = 0.0f; 



     UIView *myAddedView ; 


     for (int i=0; i<[product.CorrentAnswer intValue]; i++) 
     { 
      if(i%3 == 0 && i > 0) 
      { 
       columns = 0.0f; 
       rows += view_height; 
      } 

      myAddedView =[[[UIView alloc] initWithFrame:CGRectMake(padding+columns, rows, view_width, view_height)] autorelease]; 
      myAddedView.backgroundColor = [UIColor clearColor]; 


      CGRect myImageRect = CGRectMake(40, 100.0f, 40.0f, 40.0f); 
      UIImageView *myImage = [[UIImageView alloc]initWithFrame:myImageRect]; 

      NSString *imageName = [NSString stringWithFormat:@"%@",product.imagename]; 
      [myImage setImage:[UIImage imageNamed:imageName]]; 
      [myAddedView addSubview:myImage]; 
      [viewarray addObject:myAddedView]; 

      [self.view addSubview:myAddedView]; 
      columns+= view_width; 
     } 

我想从self.view中删除myAddedView?

希望能得到很快回答....

可以通过指定一个标签这样做是为了myAddedView ....

代码更改:

myAddedView =[[[UIView alloc] initWithFrame:CGRectMake(padding+columns, rows, view_width, view_height)] autorelease]; 
      myAddedView.backgroundColor = [UIColor clearColor]; 
//add this line 
myAddedView.tag = 10; 

和按钮点击(当你想删除子视图时)写:

if([self.view viewWithTag:10]!=nil) 
{ 
    [[self.view viewWithTag:10] removeFromSuperView]; 
} 

谢谢

+1

以及感谢这样一个快速回复队友,但我只是用下面的代码的帮助,这样做,如果(viewarray.count> 0){ \t \t \t为(UIView的*在viewarray视图) \t \t \t { \t \t \t \t [view removeFromSuperview]; \t \t \t} \t \t \t \t \t} – 2011-04-10 15:06:35

+1

我不知道为什么你使用这个viewarray因为系统本身具有规定上添加了所有的意见.....所以你只需要来标记不同的看法值........这将帮助您节省内存。谢谢 – Ravin 2011-04-10 15:13:35

user698952的答案没问题,添加标签是最好的选择。

myAddedView.tag = 10; 

如果您有多个具有相同标记的视图,您必须更改一小段删除代码。

UIView *someView = nil; 
while (someView = [self.view viewWithTag:10]) { 
    [someView removeFromSuperview]; 
}