返回前一个视图控制器实例

时间:2015-04-29 17:38:02

标签: ios objective-c uinavigationcontroller objective-c-blocks

我想回到之前的视图控制器实例。我试过了

[self dismissViewControllerAnimated:YES completion:nil];

但被卡在加载屏幕上。我想回到上一个例子。 现在它以模态呈现。我试过了:

    CameraOverlayVC *vc = [[UIStoryboard storyboardNewSendCase]instantiateViewControllerWithIdentifier:@"CameraOverlayVC"];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    NSArray *viewControllers = nav.viewControllers;
    NewCaseSummaryVC *rootVC = [viewControllers objectAtIndex:viewControllers[3]];
   [self.presentingViewController presentViewController:rootVC animated:YES completion:nil];

它崩溃了。我也尝试过:

    CameraOverlayVC *vc = [[UIStoryboard storyboardNewSendCase]instantiateViewControllerWithIdentifier:@"CameraOverlayVC"];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
   [self presentViewController:nav animated:YES completion:nil];

但它被卡在加载屏幕上..无论如何只是回到前一个视图控制器的实例?视图控制器没有连接[我也试过了展开segue,我甚至把断点看看它是否触及unwind segue的方法,但它没有]。我模态地呈现了视图控制器,但是如果我关闭这个视图控制器,它会被卡在加载屏幕上。

任何建议都会令人惊叹!再次感谢!

1 个答案:

答案 0 :(得分:0)

你这样做完全错了。您正在将CameraOverlayVC * vc作为UINavigationController的rootViewController,这意味着这是根导航控制器,之前添加的所有viewcontroller都将消失。所以当你解雇这个时,你会得到一个空白或加载的屏幕。

你需要做的是,比如说当前是在x viewController然后以模态方式呈现vc将是:

CameraOverlayVC *vc = [[UIStoryboard storyboardNewSendCase]instantiateViewControllerWithIdentifier:@"CameraOverlayVC"];

[self presentViewController:vc animated:YES completion:nil];

并解雇vc使用取消/关闭按钮,并在其点击事件上写下:

[self dismissViewControllerAnimated:YES completion:nil];

如果您有其他想法,请告诉我。