如何删除我添加的UIView

问题描述:

当以下事件执行时,我初始化并调用UIImageView。 稍后我将删除此视图。我的代码如下;如何删除我添加的UIView

self.myView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 320, 460)]; 
[myView setBackgroundColor:[UIColor whiteColor]]; 
self.myView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"someImage.png"]]; 

[self.tableView addSubview:self.myView]; 

在稍后的例子中,我将删除图,我的用于去除代码如下;

[self.tableView bringSubviewToFront:self.myView]; 
[self.myView setHidden:YES]; 
[self.myView removeFromSuperview]; 

我有问题是,我加入的tableview视图,是没有得到去除。我需要知道为什么会发生这种情况,并且需要一个解决它的程序化解决方案。

注意:我调试过了,代码的删除部分被执行,但没有任何东西被删除。帮助

+0

如果你没有设置hidden = YES,你还有问题吗? – bryanmac 2012-02-10 01:33:05

+0

是的,我做了,没有什么变化 – sharon 2012-02-10 01:37:04

+0

你是否已经将超过一个UIView实例添加到表中?删除后,打印出表格视图的子视图,以查看剩下的子视图。 – colbadhombre 2012-02-10 01:43:50

你应该尝试只[self.myView removeFromSuperview];

+0

为什么?那会和她有什么不同? – colbadhombre 2012-02-10 02:27:44

一个共同的问题,可能会导致这样的行为是从后台线程修改UIKit的对象(如UIView S)。 UIKit通常不是线程安全的,并且从后台线程调用通常不会长时间更改应用程序的可见状态。

什么是执行你的第二块代码的方法,它是如何被调用的?

FWIW,bringSubviewToFront:setHidden:应该是不必要的; removeFromSuperview应该是删除您的视图所需的全部内容。

想知道是否有像导航控制器一样在你的tableview之上有另一个控制器。 removeFromSuperview实际上是否会引用它给出不想要的结果?