如何设置 UIViewController 显示在导航栏的后退按钮上?

Posted

技术标签:

【中文标题】如何设置 UIViewController 显示在导航栏的后退按钮上?【英文标题】:How to set UIViewController to be shown on back button of Navigation bar? 【发布时间】:2015-07-07 07:04:53 【问题描述】:

我有一个带有结帐按钮的ViewController,如果用户已登录,点击结帐按钮CartViewController 应打开,但如果用户未登录,LoginViewController 应打开,登录后CartViewController 应打开,这工作正常,但我的问题是当我点击CartViewController 中导航栏的降压按钮时,如果它来自LoginViewController,它会显示 LoginViewController。我希望它每次都回到ViewController

【问题讨论】:

我已经发布了答案,请尝试一下。 我想知道为什么有人对每个帖子都投了反对票。 可能他们不知道 -1 对他们来说也是每个downvote @VarunNaharia - 当您不接受任何替代答案时,从“已接受”状态中删除答案的任何具体原因? 我正在删除所有反对票问题和答案 【参考方案1】:

您可以操作UINavigationController 对象的viewControllers 属性以从堆栈中删除特定对象。所以当你走ViewController -> LoginViewController-> CartViewController的路线时,你应该从堆栈中删除LoginViewController对象。这样,当您从 CartViewController 弹出时,您将回到 ViewController。 查看This Question 了解如何操作导航控制器堆栈

【讨论】:

【参考方案2】:

在导航返回栏按钮项目操作上编写以下代码(用于删除到 rootViewController):代码:

[self.navigationController popToRootViewControllerAnimated:YES];

【讨论】:

您假设 ViewController 是应用程序的初始点。如果 ViewController 不是栈中的根对象怎么办? @Gandalf 你是对的。但我认为对于这个问题视图控制器它是 RootViewController... 是的,我知道如果是这样的话,这将完美地工作。但它可能是也可能不是。我相信当事情不清楚时,解决方案应该更通用。 @Gandalf 是的。你是绝对正确的,但在这个问题中他提到了这一点。 (如果他有一个视图控制器并从它开始导航,那么它应该是根视图控制器)所以根据我对这个问题的看法,这是一个完美的答案。

以上是关于如何设置 UIViewController 显示在导航栏的后退按钮上?的主要内容,如果未能解决你的问题,请参考以下文章

如何在其他 UIViewController 中显示 UIViewController?

为所有 UIViewController 实例设置全局默认后退按钮显示模式

如何在通用 UIViewController 之后设置自定义 UIViewController?

iPad 应用程序,如何在 uiviewcontroller 之上显示 uiviewcontroller

如何在 UIViewController 中显示 UITableView?

如何设置 UIViewController “扩展边缘”属性