在 Swift 4 中单击导航控制器上的后退导航项时,有没有一种简单的注销方法



我有一个登录屏幕,需要电子邮件和密码。我正在使用火基身份验证。

登录屏幕嵌入在导航控制器中。从登录屏幕,它转到用户详细信息控制器。导航控制器附带的导航栏中有一个"后退"导航项。我实际上不能把它拖成一个出口。

我想知道是否有一种简单的方法可以单击"返回"并将用户返回到登录页面以注销用户。使用火基身份验证,注销代码相对简单。如果我从用户详细信息控制器返回这里,我遇到的问题是在登录控制器中解决。

我已经阅读了有关使用self.presentingcontroller来确定我从哪个控制器返回的信息,但我一直得到零。而且我不确定这是否是确定我从哪个控制器导航回来的最佳/唯一选项。

谢谢。

看起来很简单。希望这段代码会有所帮助。

  1. 在viewDidLoad中添加一个这样的函数:

    override func viewDidLoad() {
    super.viewDidLoad()
        setupLogOut()
    }
    
  2. 然后使用如下选择器处理程序方法设置这样的函数:

    fileprivate func setupLogOut() {
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(handleLogOut))
    }
    @objc func handleLogOut() {
        do {
            try Auth.auth().signOut()
            //  Present the login controller
            let loginController = LoginController()
            let navController = UINavigationController(rootViewController: loginController)
            self.present(navController, animated: true, completion: nil)
        } catch let signOutErr {
            print("Failed to sign out:", signOutErr)
        }
    }
    

如果您不想将方法添加到后退按钮。 您也可以使用以下方法注销:

override func viewWillDisappear(animated: Bool) {
  // Your sign out logic here.. 
}

当您弹出登录控制器时,会调用上述方法。

最新更新