警告:正在进行演示或解除时,尝试从视图控制器<UINavigationController:0xb359a20>中解除

Aru*_*un_ 3 objective-c uinavigationcontroller presentmodalviewcontroller ios poptoviewcontroller

在我的应用程序中,我正在做的是:

rootViewController - > pushViewController - > pushViewController - > pushViewController - > presentModalViewController

从presentModalViewController我想直接去rootViewController.

所以我做的是:

while(theViewController = [theObjectEnumerator nextObject ])
     {
         if([theViewController modalTransitionStyle] == UIModalTransitionStyleCoverVertical)
         {
             [self.mNavigationController popToRootViewControllerAnimated:
              YES];
         }
     }
 }else
while(theViewController = [theObjectEnumerator nextObject ])
{
    if([theViewController modalTransitionStyle] == UIModalTransitionStyleCoverVertical)
    {
        [self.mNavigationController dismissModalViewControllerAnimated:YES];
    }
}
Run Code Online (Sandbox Code Playgroud)

但在这里我收到一条消息
警告:在演示或解雇过程中尝试从视图控制器中解除!

并在此应用程序崩溃后.

我搜索了这个,但找不到对我有用的东西,任何机构都可以解释为什么会这样吗?

Kyl*_*ang 6

[self dismissViewControllerAnimated:YES completion:^{
    [(UINavigationController *)self.presentingViewController popToRootViewControllerAnimated:YES];
}];
Run Code Online (Sandbox Code Playgroud)

这段代码对我来说很好,

重要:

viewController必须由呈现navigationController.(在大多数情况下)如果没有,请致电self.presentingViewController.navigationController.