关闭2个模态视图控制器

我有一个基本的模态视图控制器。 我然后创建第二个:

FieldReportViewController *fieldReport = [self.storyboard instantiateViewControllerWithIdentifier:@"fieldReportView"]; [self presentModalViewController:fieldReport animated:YES]; 

从那里,我打电话给第三视图控制器:

 ScoutingReportViewController *scoutingReport = [self.storyboard instantiateViewControllerWithIdentifier:@"ScoutView"]; [self setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; [self presentModalViewController:scoutingReport animated:YES]; 

现在我想返回第一个视图控制器。 我试过(这是目前显示的视图控制器):

 -(IBAction)doneBtn { //[self.parentViewController dismissModalViewControllerAnimated:YES]; //removed [self dismissModalViewControllerAnimated:NO]; //added [[NSNotificationCenter defaultCenter] postNotificationName:@"CloseAllModalViews" object:nil userInfo:nil]; //added } 

在中/视图控制器中,我在viewDidLoad中添加一个观察者:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissModals:) name:@"CloseAllModalViews" object:nil]; 

和方法:

 -(void) dismissModals:(id)sender { [self dismissModalViewControllerAnimated:NO]; } 

按下时,它什么都不做。 它不会忽视任何观点。

任何想法我怎么能让这个工作?

编辑:弄清楚它崩溃的原因; 我忘了我在IB中添加了一个segue到我的完成按钮。 这会导致内存问题并导致崩溃。

编辑2:这将解除两个视图控制器回到基本/第一视图控制器。 但它并没有给我任何动画。 我可以在没有动画的情况下解散当前的VC并用动画解雇中间的VC,但是在转换之前我会看到中间的VC。 如果可能的话,我更愿意拥有从当前VC到基础VC的动画。

我以前做过这个,我不得不使用UINotificationCenter来关闭中间视图。 当您按下doneBtn时,发布通知。 在推送其他视图之前,添加一个带有dismissModal作为操作的观察者。 如果删除动画,它应该看起来就像你回到了原始视图。

在您的视图中,您想要自动关闭:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissModals:) name:@"CloseAllModalViews" object:nil]; 

把它放在你的doneBtn方法中:

 [[NSNotificationCenter defaultCenter] postNotificationName:@"CloseAllModalViews" object:nil userInfo:nil];