如何删除我添加的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视图,是没有得到去除。我需要知道为什么会发生这种情况,并且需要一个解决它的程序化解决方案。
注意:我调试过了,代码的删除部分被执行,但没有任何东西被删除。帮助
答
一个共同的问题,可能会导致这样的行为是从后台线程修改UIKit的对象(如UIView
S)。 UIKit通常不是线程安全的,并且从后台线程调用通常不会长时间更改应用程序的可见状态。
什么是执行你的第二块代码的方法,它是如何被调用的?
FWIW,bringSubviewToFront:
和setHidden:
应该是不必要的; removeFromSuperview
应该是删除您的视图所需的全部内容。
答
想知道是否有像导航控制器一样在你的tableview之上有另一个控制器。 removeFromSuperview实际上是否会引用它给出不想要的结果?
如果你没有设置hidden = YES,你还有问题吗? – bryanmac 2012-02-10 01:33:05
是的,我做了,没有什么变化 – sharon 2012-02-10 01:37:04
你是否已经将超过一个UIView实例添加到表中?删除后,打印出表格视图的子视图,以查看剩下的子视图。 – colbadhombre 2012-02-10 01:43:50