UINavigationController - 返回按钮弹出到某个 UIViewController

Posted

技术标签:

【中文标题】UINavigationController - 返回按钮弹出到某个 UIViewController【英文标题】:UINavigation Controller - Back Button Pop to a certain UIViewController 【发布时间】:2014-05-13 16:35:24 【问题描述】:

假设我们的UINavigationController 堆栈中有几个UIViewControllers

我如何定义UIViewController(而不是前一个)后退按钮应该弹出到? (所以基本上弹出两个或更多而不是一个) 也许我希望后退按钮弹回根视图控制器,或者之前只有 2 个视图控制器。

我知道我可以创建一个自定义的左栏按钮,但这会丢失按钮中漂亮的向左箭头。而且我不想使用 png 图形来恢复那个箭头。

编辑:

我想知道在导航栏中按下后退按钮时如何弹出到某个 UIViewController。我知道如何弹出到某个控制器,但不知道如何让后退按钮执行此操作。

【问题讨论】:

我认为您需要澄清您的问题。您想知道如何自定义后退按钮的操作,还是想知道如何从导航控制器中弹出多个项目?标题表示后者,但最后一段暗示前者。 【参考方案1】:

当您推送视图控制器时,推送您可能想要返回的所有视图控制器,然后使用popToViewController:animated: 返回您想要的视图控制器。或者使用popToRootViewControllerAnimated: 一路返回rootViewController

【讨论】:

是的,但是当按下导航栏上的后退按钮时如何执行此操作?它应该看起来完全像一个标准的后退按钮(可能带有自定义文本)。 @Max 我明白了。一种可能的解决方案是创建 UINavigationController 类的子类并覆盖 popViewControllerAnimated: 方法以获取您的自定义代码。尚未对其进行测试以查看它是否按预期工作。 是的,它可以工作,我读过它,但这并不是一个很好的解决方案。因为我必须检查每一个流行音乐。 @Max 您只需要在不想回到之前的 VC 时实现自定义代码。否则你可以直接拨打[super popViewControllerAnimate:]

以上是关于UINavigationController - 返回按钮弹出到某个 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr

从一个 UINavigationController 到另一个 UINavigationController (Swift iOS 9, xcode 7)

UINavigationController