繁体   English   中英

从Superview中删除表子视图

[英]Removing table subview from Superview

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

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

您可以为任何视图(子视图)设置唯一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];

如果View1hideView内部,则可以只调用[hideView removeFromSuperView]; 删除两者,或仅使用@Nekto解决方案识别要删除的视图。
对于滚动问题,正常的做法是,如果在UITableView顶部添加视图,则会丢失表的滚动,您可以查看UIView的hitTest方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM