Iphone 从iOS 4 SDK上的SuperView中删除视图

Iphone 从iOS 4 SDK上的SuperView中删除视图,iphone,navigation,views,Iphone,Navigation,Views,我正在用iOS4SDK开发一个iPhone3.1.3应用程序 我有两个ViewController,mainViewController和AboutViewController 我使用此代码从mainViewController转到AboutViewController(mainViewController.m中的代码): 这将从AboutViewController返回到mainViewController(AboutViewController.m中的代码): 当我点击AboutViewCo

我正在用iOS4SDK开发一个iPhone3.1.3应用程序

我有两个ViewController,mainViewController和AboutViewController

我使用此代码从mainViewController转到AboutViewController(mainViewController.m中的代码):

这将从AboutViewController返回到mainViewController(AboutViewController.m中的代码):

当我点击AboutViewController上的Back按钮时,我得到了一个EXC\u BAD\u访问权限

我正在使用基于窗口的应用程序模板

我还尝试在
[self.view removeFromSuperview]
中添加断点,但我做不到

你知道为什么吗?

试试:

[self presentModalViewController:aboutController animated:YES];
要表达观点,请执行以下操作:

[self dismissModalViewControllerAnimated:YES];
要删除视图…

请执行以下操作:

- (IBAction) aboutClicked:(id)sender
{
    AboutViewController* aboutController =
        [[AboutViewController alloc] 
         initWithNibName:@"AboutViewController"
                  bundle:nil];
    [self presentModalViewController:aboutController animated:YES];

    [aboutController release];    
}
这将从AboutViewController返回到mainViewController(AboutViewController.m中的代码):

1) 将aboutController设置为类级别变量

2) 创建要处理的委托方法

(iAction)反向单击:(id)发件人

3) 在委托调用的实现中

 [aboutController.view removeFromSuperView];

获取EXC_BAD_访问权限的原因是,在将viewController的视图添加为子视图后,您释放了控制器,因此触摸事件无法看到要处理它的预期viewController

注释出发布声明,如下所示,它应该可以工作

- (IBAction) aboutClicked:(id)sender
{
    AboutViewController* aboutController =
    [[AboutViewController alloc] 
     initWithNibName:@"AboutViewController"
              bundle:nil];
    [self.view addSubview:aboutController.view];

//[aboutController release]; To avoid leaking consider creating aboutController variable at instance level and releasing it in the dealloc.
}

有时我会遇到动画:是的,在presentModalViewController中尝试动画:否。你的答案是正确的,但是。。。你知道为什么我的代码失败了吗?它应该可以正常工作,你应该尝试使用僵尸来找出确切的问题。我猜您在AboutViewController中的dealloc方法中超出了某些内容。如果僵尸想告诉你发生了什么,试试仪器,他们更擅长精确定位。当我分配像UIButton这样的自动释放的UI组件,然后尝试在我的视图控制器的dalloc方法中释放它时,我通常会遇到这个错误。我向您提供此解决方案是因为它更适合您的情况。@Cyprian您是对的,但我只是想指出是哪个内存释放导致了错误,希望问题负责人会使用其他机制来管理此内存。现在,我更新了我的答案来提醒大家,这是正确的答案。如果我释放ViewController,我将得到一个SIGABRT异常。你是对的!!非常感谢@Cyprian,你必须考虑删除你的1点。谢谢
- (IBAction) backClicked:(id) sender
{
    [[self parentViewController] dismissModalViewControllerAnimated:YES]
}
 [aboutController.view removeFromSuperView];
- (IBAction) aboutClicked:(id)sender
{
    AboutViewController* aboutController =
    [[AboutViewController alloc] 
     initWithNibName:@"AboutViewController"
              bundle:nil];
    [self.view addSubview:aboutController.view];

//[aboutController release]; To avoid leaking consider creating aboutController variable at instance level and releasing it in the dealloc.
}