从UITabBarController解散

时间:2017-08-03 12:42:31

标签: ios swift uitabbarcontroller appdelegate

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

关于我的问题。我有类似的东西 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
    }
}

如果用户存在,则引导我首先查看标签栏控制器内的控制器。我有导航按钮,可以注销。 我需要注销(将数据发送到服务器),然后使用文本字段和按钮转到我的第一个视图控制器,我可以再次登录。

我如何实施呢?

3 个答案:

答案 0 :(得分:0)

注销后尝试此代码 -

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
}

希望它有所帮助!

答案 1 :(得分:0)

将此代码置于注销按钮的功能中。它会把你带回你的根控制器。

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

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

答案 2 :(得分:0)

在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
    }