从 UITabBarController 中解雇

Dissmiss from UITabBarController

我想它可以重复,但我到处寻找并没有找到适合我的解决方案。

关于我的问题。我有这样的东西 open this image to see more

在我的 AppDelegate 中我有 func

func logIn() {

    let userExist = UserDefaults.standard.string(forKey: "auth_key_user")
    if userExist != nil && userExist != "" {
        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let whereToGo = storyboard.instantiateViewController(withIdentifier: "AllPostsOfUserTabBarController") as! AllPostsOfUserTabBarController
        window?.rootViewController = whereToGo
    }
}

如果用户存在,它会引导我到选项卡栏控制器内的第一个视图控制器。那里有导航按钮和注销操作。 我需要注销(将数据发送到服务器),然后转到我的第一个带有文本字段和按钮的视图控制器,在那里我可以再次登录。

我需要如何实施它?

注销后尝试此代码-

DispatchQueue.main.sync() {
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let loginVC = storyboard.instantiateInitialViewController()
    appDelegate.window?.rootViewController = loginVC
}

希望对您有所帮助!

将此代码用于您的注销按钮。它会让你回到你的根控制器。

func logoutBtnClicked()
{
   DispatchQueue.main.sync()
   {
    (send your data to server)

    self.navigationController?.popToRootViewController(animated: true)
   }
}

在 appdelegate 中试试这个

登录时

    self.window?.rootViewController = whereToGo

注销时

 func setupLoginViewController() {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let loginVC: UIViewController? = storyboard.instantiateViewController(withIdentifier: "loginVCID") as? UIViewController
       let navController: UINavigationController? = UINavigationController(rootViewController: loginVC!) as UINavigationController

        window?.rootViewController = navController
    }