如何删除我添加的UIView

时间:2012-02-10 01:28:19

标签: iphone objective-c

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

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的视图没有被删除。我需要知道为什么这是hapenning,以及解决它的程序解决方案。

注意:我已经调试了,代码的删除部分被执行但没有被删除。帮助

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

可能导致此类行为的常见问题是从后台线程修改UIKit对象(如UIView s)。 UIKit通常不是线程安全的,并且来自后台线程的调用通常不会长时间改变应用程序的可见状态(如果有的话)。

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

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

答案 2 :(得分:0)

想知道你的桌面视图上是否还有另一个控制器,就像导航控制器一样。 removeFromSuperview实际上会引用它给出不需要的结果吗?