2012-04-10 110 views
0

我是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。当我删除[一个发布]命令对父,它的工作,但有一个内存泄漏。

您能否为我解释这个错误的原因以及如何解决这种情况?

回答

0

Defina AViewController对象(AViewController * A)接口和实现初始化值象下面

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

[self.view addSubView:a.view];

,只要你想删除简单地把[A removeFromSuperview]在的dealloc
[释放]

+0

后,感谢您的回答。正如你所说的,a是父变量的实例变量,不是吗?但[removeFromSuperview]在子视图的代码中,我如何访问父变量? – hieund 2012-04-11 06:48:46

+0

通过委托方法,创建自定义委托或邮寄通知相同。 – Mangesh 2012-04-12 06:33:59

0

你可以设置一个视图标签没有

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

我认为这将解决您的问题

+0

我想它被称为在AViewController – beryllium 2012-04-10 11:18:32

+0

试试这个编辑 – 2012-04-10 11:24:48

相关问题