2012-07-30 75 views
0

在我ViewControllers(视图控制器A)中的一个,我有以下代码:EXC_BAD_ACCESS在removeFromSuperview - 使用ARC

​​

而在AlertViewController,我有一个按钮,并在其上的用户点击,我有:

[self.view removeFromSuperview]; 

每当我点击按钮,结果是EXC_BAD_ACCESS。 我无法弄清楚问题所在。我的项目使用ARC和ViewController A是导航控制器堆栈的一部分,如果这些信息有帮助。

+0

您无法从其超级视图中删除'self.view'。你想隐藏什么样的观点? – 2012-07-30 22:25:45

+0

@Rickay我试图隐藏AlertViewController的xib中的整个视图 – ddd 2012-07-30 23:15:22

+0

如果你想隐藏视图,那么只需使用'self.view.hidden = YES',但老实说,如果隐藏视图控制器的视图显示它下面的东西,您没有正确使用视图控制器。 – 2012-07-30 23:33:07

回答

1

这里的问题是,UIView不拥有它的UIViewController。在第一部分代码中,您将UIView添加到子视图中,但让UIViewController消失。来自UIViewController的UIView是特殊的,你不能让这发生。

确保创建UIView的UIViewController的生命期与视图一样长。

+0

谢谢,那么我该如何保留UIViewController呢? – ddd 2012-07-30 23:13:52

+0

通常情况下,您可以通过将您的viewController作为子项添加到拥有的VC来完成。 '[self addChildViewController:aViewController];' – 2012-07-31 16:15:21

+0

我做了一个视图为一个伊娃,这就是我可以保留它。它现在有效。 – ddd 2012-08-02 17:40:03