我有一个基本的模态视图控制器。然后我用:
创建第二个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的动画。
答案 0 :(得分:0)
我以前做过这个,我不得不使用UINotificationCenter来关闭中间视图。当您按下doneBtn时,发布通知。在推送其他视图之前,添加一个带有dismissModal作为操作的观察者。如果删除动画,它应该看起来就像你回到原始视图一样。
在您的视图中,您想要自动关闭:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dismissModals:)
name:@"CloseAllModalViews"
object:nil];
将它放在你的doneBtn方法中:
[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseAllModalViews" object:nil userInfo:nil];