从Superview中删除表子视图

时间:2012-05-30 09:08:12

标签: iphone ios ios4

您好我的应用程序Intially我从app delegate加载了一个视图。接下来,当某个按钮单击此根视图时,我添加了此代码。

-(IBAction)method
{
   View1 *v1=[[View1 alloc] init];
   CGRect frame = CGRectMake(0.0f, 100.0f, 320.0f, 250.0f);
   v1.view.frame=frame;

   hideView = [[UIView alloc] initWithFrame: CGRectMake(0,0,320,480)];
   hideView.backgroundColor = [UIColor blackColor];
   hideView.alpha =0.8;
   [hideView addSubview:v1.view];
   [self.view addSubview:hideView];
}

在上面的代码中,View1是另一个视图控制器,隐藏视图只是根视图控制器中的一个视图。现在完全为Root视图控制器添加了两个视图。现在我的问题是,当我点击表格单元格时,我想从根视图中删除两个添加的子视图。这该怎么做?而且当我将这个子视图添加到根视图滚动也不可能到表视图并说错误访问错误如何解决这个问题?或任何其他方式来做到这一点。

2 个答案:

答案 0 :(得分:1)

您可以将唯一tag设置为任何视图(子视图),以便以后轻松检索对它们的引用。

例如,在您的情况下,您可以添加以下行:

 v1.tag = 10112;
 hideView = 10113;

稍后您可以输入对该视图的引用:

//view - is a root view of that subviews
View1 *v1 = [view viewWithTag:10112];
UIView *hideView = [view viewWithTag:10113];

// and now you are able to remove them:
[v1 removeFromSuperview];
[hideView removeFromSuperview];

答案 1 :(得分:0)

如果View1位于hideView内,那么您只需致电[hideView removeFromSuperView];即可将其删除,或者只使用@Nekto解决方案来识别要删除的视图。
对于滚动问题,如果你在UITableView之上添加一个视图会丢失表的滚动是很正常的,你可以看一下UIView的hitTest方法。