ios - 为每个 View Controller 指定后退按钮的行为

标签 ios swift uinavigationcontroller segue

我有几个 View Controller ,称它们为 1、2、3、4、5 和 6。我制作了一个 UINavigationController,它有一个后退按钮。后退按钮出现在每个 View Controller 上(我从不隐藏它)。

现在我遇到了这样的情况。我从 1、2、3、4、5 然后回到 3。作为附加信息,从 5 到 3 的转换是使用手动转场完成的(但有时我使用其他转场,如推送或模态)。如果我点击那个 View Controller 上的后退按钮,通常它会转到 5,因为堆叠是如何工作的。但我希望能够从 View Controller 3 中指定,当点击“后退”按钮时,你总是转到 vc 2...

我想在这里操纵导航堆栈可能是一种方式(基于当前的 View Controller ),但我不知道这是理想的,还是有更合适的东西......

最佳答案

您可以子类化并重写 UINavigationController 中的一些方法在按下后退按钮时获得回调。然后你可以强制导航 Controller 以你想要的方式响应。

例如,当 popViewController(animated:) 被调用时,您可以根据 View Controller (或您想要的方式)确定您是否应该真正允许正常的后退按钮功能。如果你想要正常的行为,只需调用 super。在从 View Controller 3 到 View Controller 2(而不是 View Controller 5)的情况下,您不会调用 super,而是执行 popToViewController(viewController2, animated: animated).

关于ios - 为每个 View Controller 指定后退按钮的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954382/

相关文章:

ios - Swift:CMAuthorizationStatus 变化的监听器

ios - 如何更改 UINavigationController 后退按钮名称?

ios - 如何从导航栏中删除阴影线?

ios - SceneKit 添加地板崩溃

ios - 什么是 setTranslatesAutoresizingMaskIntoConstraints :NO for?

iphone - 如何检测用户是否在 iOS 中使用 home+power 进行了截图?

ios - Swift ios9 是否修复了导致错误的 UIViewControllerBasedStatusBarAppearance

带有 url startswith 的 iOS webview

ios - 前置摄像头填充圆形 UIView

ios - 在 iOS 7 中隐藏状态栏时防止 UINavigationController 调整原点