Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 关闭2个模态视图控制器_Objective C_Ios - Fatal编程技术网

Objective c 关闭2个模态视图控制器

Objective c 关闭2个模态视图控制器,objective-c,ios,Objective C,Ios,我有一个基本模态视图控制器。然后,我创建了第二个: FieldReportViewController *fieldReport = [self.storyboard instantiateViewControllerWithIdentifier:@"fieldReportView"]; [self presentModalViewController:fieldReport animated:YES]; 从那里,我使用以下命令调用第三视图控制器: ScoutingReportViewCont

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

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];
现在我想回到第一个视图控制器。我尝试过(这是当前显示的视图控制器):

在middle/s view controller中,我在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];

我以前做过,我不得不使用UINotificationCenter来消除中间视图。当您按doneBtn时,发布通知。在推送其他视图之前,添加一个观察者,并将dismissModal作为操作。如果删除动画,它应该看起来像您刚刚返回到原始视图

在您的视图中,您希望自动解除:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(dismissModals:)
                                                 name:@"CloseAllModalViews"
                                               object:nil];
将其放入您的doneBtn方法中:

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

在设备上运行控制台时,控制台上是否没有提示?构建xcode时有没有警告?没有,当我在ipad上运行xcode时,控制台中没有崩溃信息。我注意到,xcode 4.2在崩溃方面提供的反馈比以前的版本少得多=/如果您的第一个viewcontroller是navigationcontroller,则可以使用
PoptrootViewController初始化:
。要更改吗?在设备上运行时,控制台上没有提示?构建xcode时有没有警告?没有,当我在ipad上运行xcode时,控制台中没有崩溃信息。我注意到,xcode 4.2在崩溃方面提供的反馈比以前的版本少得多=/如果您的第一个viewcontroller是navigationcontroller,则可以使用
PoptrootViewController初始化:
。想改变它吗?太棒了,这确实有效。唯一不好的一面是我没有得到一个很好的过渡。如果设置当前模态的动画,中间模态将不会消失(我猜测,因为当前模态正在以动画方式消失,第二个消失将丢失)。我不能设置当前模态和中间模态的动画,但在过渡之前,我会短暂地看到第二个模态。我也不能设置动画,直接转到基本模式。我更喜欢一些动画过渡,你认为这可能吗?(我将用新代码更新帖子)如果你想让它们正确地动画化,你可能需要添加一些延迟或计时。我承认这不是解决这个问题的最优雅的方法,但它确实有效。如果你找到一个合适的工作环境,请发布它。太棒了,这确实有效。唯一不好的一面是我没有得到一个很好的过渡。如果设置当前模态的动画,中间模态将不会消失(我猜测,因为当前模态正在以动画方式消失,第二个消失将丢失)。我不能设置当前模态和中间模态的动画,但在过渡之前,我会短暂地看到第二个模态。我也不能设置动画,直接转到基本模式。我更喜欢一些动画过渡,你认为这可能吗?(我将用新代码更新帖子)如果你想让它们正确地动画化,你可能需要添加一些延迟或计时。我承认这不是解决这个问题的最优雅的方法,但它确实有效。如果你找到了一个不错的解决办法,请张贴出来。