我在ios6中遇到有关解雇modalViewController的问题

这是我共享的代码段:

   UIViewController *controller=appdelegate.navigationController.topViewController;

   if(kDeviceVersion>=5.0){

     if(controller.parentViewController){

        if(controller.parentViewController.parentViewController){

            [controller.parentViewController.parentViewController dismissViewControllerAnimated:NO completion:nil];

        }

        [controller.parentViewController dismissViewControllerAnimated:NO completion:nil];

    }

}
else{

    if(controller.parentViewController){

        if(controller.parentViewController.parentViewController){

            [controller.parentViewController.parentViewController dismissModalViewControllerAnimated:NO];

        }

        [controller.parentViewController dismissModalViewControllerAnimated:NO];

    }

}


这段代码在ios4.0到ios 5.1.1上正常工作。但是无法在ios6上运行。
我要关闭的那些模式视图控制器没有被关闭。而是显示此错误。

尝试关闭当前未显示其视图的模式视图控制器。自我= UINavigationController:0xa947440 modalViewController = UINavigationController:0x8c36170

但是,当我尝试使用presentModalViewController呈现该视图控制器时,它会显示

警告:尝试在已经呈现UINavigationController:0x8c36170的UINavigationController:0xa947440呈现

请建议我该怎么做以及如何为ios6解决此问题。

最佳答案

从您的问题尚不清楚,哪个VC提供了您要关闭的VC。但是,我建议始终遵循以下规则:

从也提出它的VC撤消。因此,例如,如果VC0提供了VC1,则还将VC1从VC0中删除。实际上,这也是Apple推荐的方式,您可以从以下非常相关的问题的答案之一中看到opening and closing other UIViewControllers - any other approaches than to use protocol & delegate?

关于iphone - ios6中解雇modalViewController错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12641542/

10-09 15:33