从其超级视图中删除视图
问题描述:
我在self.view中添加了几个按钮。当用户点击一个按钮时,我将加载另一个视图(子视图)。我的代码,其中我加载子视图被示出在下面从其超级视图中删除视图
subView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.scrollView.contentSize.width, self.scrollView.contentSize.height)];
subView.tag=1;
// and then i add various other components to it
[self.view addSubview:subView]; // and finally add it to the view
当用户触摸该视图中,我检测到它并删除视图(ⅰ已经有了这样的检测部)。
这是我如何删除我的观点
UIView *v = [self.subView viewWithTag:1];
v.hidden = YES;
[v endEditing:YES];
[v removeFromSuperview];
视图自败,但我不能点击按钮或任何东西,这是在self.view。当我按住鼠标光标一段时间,我可以点击它,否则我不能。我该如何解决这个问题?
答
我觉得你的问题是,你做
[self.subView viewWithTag:1];
,但你要删除的观点是“拥有”的self.view所以应该是
[self.view viewWithTag:1];
但是,如果您有一个对子视图的引用,为什么再次搜索它?为什么不立刻道:
self.subView.hidden = YES;
[self.subView endEditing:YES];
[self.subView removeFromSuperview];
顺便说一句,你可能想看看你的内存管理,我看你的Alloc你的子视图,但我没有看到它被释放,当视图被再次删除。也许你会这样做,你只是不显示代码,在这种情况下忘记我的评论。
答
如果这一行:
UIView *v = [self.subView viewWithTag:1];
真的是:
UIView *v = [self.view viewWithTag:1];
?
答
尝试删除这样子视图:
for (UIView *subView in self.view.subviews) {
if (subView.tag == (int)yourSubViewTag) {
[subView removeFromSuperview];
}
}
我正在使用ARC。所以不必删除 – Illep 2012-01-13 16:47:52