如何在 ios 中的一个控制器的按钮操作中返回当前的上一个视图

Posted

技术标签:

【中文标题】如何在 ios 中的一个控制器的按钮操作中返回当前的上一个视图【英文标题】:how to go back to the current previous view in one controller's button action in ios 【发布时间】:2014-05-24 08:22:39 【问题描述】:

我正在尝试如果用户提供正确的密码,它将返回到我所在的当前最后一个视图控制器,就像在 ios 中,如果你在你的应用程序中输入后台,并且在一段时间后你进入前台,那么你将返回到最后一个视图,即您在进入背景之前所在的位置。请告诉我如何实现这一点。

【问题讨论】:

我的问题是,我在密码视图控制器中从应用程序委托调用一个名为密码视图控制器的页面我正在检查给定密码是否正确,如果正确它将返回到上一页但是我无法实现这个 【参考方案1】:

如果你想弹出到根控制器,你可以使用 popToRootViewControllerAnimated。

[self.navigationController popToRootViewControllerAnimated:YES]; 来自 UINavigationController 的 Apple 文档

popToRootViewControllerAnimated:

弹出堆栈上除根视图控制器之外的所有视图控制器并更新显示。 - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 如果您设置了UINavigationController 并且它的根控制器称为 A,那么如果您从 A 导航到 B,然后从 B 导航到 C,您有两种可能返回到以前的控制器(您可以有其他控制器,但我列出主要的):

使用popViewControllerAnimated 从 C 导航回 B 使用popToRootViewControllerAnimated从 C 导航回 A

【讨论】:

我没有使用导航视图控制器。【参考方案2】:

我建议使用模式视图控制器,它实际上并未添加到您的父控制器层次结构(子视图控制器)中,并且可以根据您的判断显示和关闭,请查看 here 以获得一个很好的示例。

【讨论】:

这实际上是一个非常古老的教程,但总体概念仍然相同。 您的示例工作正常。但我有应用程序委托控制器,我从那里调用我的密码视图控制器,但在密码视图控制器的按钮操作中,我想从应用程序进入后台的位置调用我的前一个视图控制器。 当您加载密码视图控制器时,您的应用程序是否总是进入后台,您是在进行某种 Web 身份验证,还是这只是偶然出现的情况?并且您是否在密码视图控制器之前加载视图控制器?即 appDelegate -> otherController -> passwordController. appdelegate-passwordviewcontroller-immediatepreviousviewcontroller.

以上是关于如何在 ios 中的一个控制器的按钮操作中返回当前的上一个视图的主要内容,如果未能解决你的问题,请参考以下文章

使用苹果键盘中的返回按钮进行导航

在 ios 6/ios 7 兼容应用程序中更改导航返回按钮操作

如何在 iOS 的 didselectrowatindexpath 中触发按钮操作方法,目标 c

如何在 iOS 7 中为按钮添加约束?

自定义 UIView XIB 内的 iOS 导航返回按钮(无导航控制器)

ios - 将目标添加到另一个视图控制器中的按钮