当按下导航栏的内置后退按钮时,弹出到根视图控制器

mik*_*kew 2 uinavigationbar uinavigationcontroller ios swift

每当在顶部视图控制器上按下后退按钮时,我都想返回到特定的视图控制器,而不是先前的视图控制器。我希望有一种方法可以某种方式覆盖后退按钮的功能。

编辑:

我得到这个工作:

self.navigationController?.popToRootViewController(animated: true)

唯一的问题是,在对其进行动画处理时,它会将中间视图控制器显示为根目录。

Ene*_*nso 5

阅读您已编辑的问题,似乎您正在寻找的是弹出导航堆栈中的根视图控制器,而动画没有揭示它们之间的任何视图控制器。

您可以通过从堆栈中删除所有那些中间视图控制器来轻松实现此目的。

viewDidLoad最后显示的视图控制器的方法中,执行以下操作:

func viewDidLoad() {
    super.viewDidLoad()
    if let rootVC = navigationController?.viewControllers.first {
        navigationController?.viewControllers = [rootVC, self]
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,当点击“后退”按钮时,导航控制器将关闭当前视图控制器的根目录。