我有几个 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/