从superview中删除视图时出错

时间:2012-04-10 11:12:29

标签: ios subview addsubview

我是iOS开发的新手,我遇到麻烦想问你。

我的目的是在基本视图上显示视图(不是全屏),并且仍然可以在子视图外面看到父级。 所以我在当前的viewController上添加了一个子视图(UIViewController的子类),然后我打开子视图:

AViewController *a = [[AViewController alloc] initWithNibName:nil bundle:nil];
[self.view addSubView:a.view];
[a release];

这里有效,并按照我的预期显示这个子视图。在这个子视图中,我有关闭该子视图的关闭按钮,并在子视图中执行此操作:

- (IBAction)BackTouchUp:(id)sender 
{
    [self.view removeFromSuperview];
}

当我点击关闭按钮时,我收到错误EXC_BAD_ACCESS。当我在父节点上删除[a release]命令时,它可以工作,但是存在内存泄漏。

您能否告诉我这个错误的原因以及如何解决这个案子?

2 个答案:

答案 0 :(得分:0)

您可以设置视图标记号

[a.view setTag:3];
uiView *f=[self.view viewWithTag:3];
[f removeFromSuperview];

我认为这将解决您的问题

答案 1 :(得分:0)

在接口和实现中定义AViewController对象(AViewController * a),初始化值如下所示:

a = [[AViewController alloc] initWithNibName:nil bundle:nil];

[self.view addSubView:a.view];

并且只要您想删除,只需将[a removeFromSuperview]放入dealloc

即可
[a release];