目标C - 如何在创建new之前删除相同的先前UIView

时间:2014-09-03 06:30:37

标签: ios objective-c uiview

我在 UITableView 上创建了一个视图,这里是代码

UIView *olderLinesView = (UIView*)[self.view viewWithTag:1820];

for (UIView* view in [olderLinesView subviews]) {
    [view removeFromSuperview];
}
[olderLinesView removeFromSuperview];

UIView *linesView=[[UIView alloc]initWithFrame:CGRectMake(2, -2, 1022, height)];
[linesView setBackgroundColor:[UIColor clearColor]];
[linesView setUserInteractionEnabled:NO];
[linesView setTag:1820];
[tableView addSubview:linesView];

但问题是,如果在创建 linesView (相同视图)之前删除 olderLinesView ,则根本不会创建 linesView 。如果我在创建之前不删除此视图,则会反复重绘视图。我一次又一次地调用此代码,因此需要在创建新实例之前删除此视图。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要修改以下代码

UIView *olderLinesView = (UIView*)[self.view viewWithTag:1820];

for (UIView* view in [tableview subviews]) 
{
      if( [view isKindOfClass:[olderLinesView class]] )
    {
      for (UIView* subview in [view subviews]) 
      {

      [subview removeFromSuperview]; //if you want all views
      }
    }
}
///(OR)

for (UIView* view in [tableview subviews]) 
{
      if( [view isKindOfClass:[olderLinesView class]] )
    {
      for (UIView* subview in [view subviews]) 
      {
      if(subview.tag==1820)
      {

        [subview removeFromSuperview];//if you want remove single view
      }
    }
}

希望它可以帮助你......!