0

嗨,在我的应用程序中,我最初从应用程序委托加载了一个视图。接下来,当某个按钮单击此根视图时,我添加了此代码。

-(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 是另一个视图控制器,隐藏视图只是根视图控制器中的一个视图。现在完全为根视图控制器添加了两个视图。现在我的问题是当我单击表格单元格时,我想从根视图中删除两个添加的子视图。这该怎么做?而且当我将此子视图添加到根视图时,滚动也无法到表视图并说访问错误如何解决这个问题?或任何其他方式来做到这一点。

4

2 回答 2

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];
于 2012-05-30T09:18:07.700 回答
0

如果View1是 inside hideView,那么您可以调用[hideView removeFromSuperView];以删除两者,或者仅使用 @Nekto 解决方案来识别您要删除的视图。
对于滚动问题,如果您在顶部添加一个视图,UITableView您将失去表格的滚动,这是正常的,您可以查看 UIView 的hitTest方法。

于 2012-05-30T09:27:32.467 回答