回到视图控制器的前一个实例

Posted

技术标签:

【中文标题】回到视图控制器的前一个实例【英文标题】:going back to a previous instance of a view controller 【发布时间】:2015-04-29 17:38:02 【问题描述】:

我想。我试过了

[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];

但它卡在加载屏幕上.. 有没有办法?视图控制器没有连接[我也尝试过 unwind segue,我什至设置了断点,看看它是否命中了 unwind segue 的方法,但它没有]。我模态地展示了视图控制器,但是如果我再次关闭这个视图控制器,它就会卡在加载屏幕上。

任何建议都会很棒!再次感谢!

【问题讨论】:

“加载屏幕”是什么意思? 如果您以模态方式呈现,那么您需要做的就是从控制器中关闭模态视图,它将返回到前一个视图。尝试:[self dismissViewControllerAnimated:YES 完成:nil]; 【参考方案1】:

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

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

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

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

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

[self dismissViewControllerAnimated:YES completion:nil];

如果您还有其他期待,请告诉我。

【讨论】:

以上是关于回到视图控制器的前一个实例的主要内容,如果未能解决你的问题,请参考以下文章

将值传递给导航视图控制器堆栈中的前一个视图控制器

如何识别导航堆栈中的前一个视图控制器

回到初始视图控制器

带有 timeOffSet 的 CAAnimation

我应该使用 presentViewController 回到第一个视图控制器吗?

LLDB – 在任意对象的实例变量上设置观察点