【发布时间】:2019-06-08 22:35:12
【问题描述】:
我有一个正在使用的故事板,它是这样设置的:
登录屏幕 -> 选项卡栏控制器 -> 导航控制器 -> 屏幕 1 转至屏幕 2 转至屏幕 3。
我第一次登录时,一切正常。屏幕 1 转到屏幕 2,屏幕 2 转到屏幕 3,然后您可以使用后退按钮返回屏幕 2,然后屏幕 1。但是,我有一个“注销”功能(代码如下,虽然我没有认为这与我的问题有关)并且在我“注销”后,它会将我带到登录屏幕(上面序列中的第一个屏幕)。当我再次登录时,导航到屏幕 2 或屏幕 3,从 segue 中按后退按钮会将我一直返回到登录屏幕,而不是之前的屏幕 1 或屏幕 2。
@objc func logOut(){
let homeView = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
self.navigationController?.pushViewController(homeView, animated: true)
homeView.navigationItem.hidesBackButton = true
}
【问题讨论】:
-
在我看来,您应该回到登录页面,而不是根据视图层次结构将用户引导到那里,后退按钮想要返回到最后一个视图,这将是
Screen 2或Screen 3. -
亚伦——这就是重点。它正在返回登录屏幕。我希望它按照正常功能进入屏幕 2 或屏幕 1。
-
我就是这么说的。这是因为您正在破坏导致其错误返回的导航堆栈。看看通过不再次实例化登录屏幕并展开 segue 来重写您的注销代码。
-
aaron - 我会调查的,但请记住,我正在从屏幕 1 转到屏幕 2,然后按回,它需要我登录。这是零意义,因为登录不是最后一个视图。