Ios 如何在登录swift 3后返回主页或上一个viewcontroller

Ios 如何在登录swift 3后返回主页或上一个viewcontroller,ios,swift,Ios,Swift,我正在开发一个应用程序,其中导航控制器连接到tabbar控制器,其他一些viewcontroller连接到tabbar控制器,如图所示: 现在,我只想在用户单击第二个选项卡而未登录时显示登录页面。在第二个选项卡控制器中,我有: if let token = cookies["token"] { //do something } else { let vc = self.storyboard?.instantiateViewController(withIdentifie

我正在开发一个应用程序,其中导航控制器连接到tabbar控制器,其他一些viewcontroller连接到tabbar控制器,如图所示:

现在,我只想在用户单击第二个选项卡而未登录时显示登录页面。在第二个选项卡控制器中,我有:

if let token = cookies["token"] {
        //do something
} else {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "loginView")
    self.tabBarController?.setViewControllers([vc!], animated: true)
}
在我的LoginViewController中,我想在成功登录后返回上一页。我做了一些关于这个话题的研究。这是我试过的。我试过这个:

let vc = self.storyboard?.instantiateViewController(withIdentifier: "minePage") as! MineViewController
self.tabBarController?.setViewControllers([vc], animated: true)
self.navigationController?.pushViewController(vc, animated: true)
它会打开页面,但只显示选项卡栏,不再显示导航栏。我也试过:

let vc = self.storyboard?.instantiateViewController(withIdentifier: "minePage") as! MineViewController
self.tabBarController?.setViewControllers([vc], animated: true)
self.navigationController?.pushViewController(vc, animated: true)
它还将用户带回“minePage”,但只显示导航栏而不是选项卡栏。我还尝试在情节提要中添加一个“展开”序列,并在第一视图控制器中添加一个函数:

@IBAction func prepareForUnwindWithSegue(segue: UIStoryboardSegue){
}
并尝试了以下方法:

self.dismiss(animated: true, completion: nil)
登录后不会发生任何事情。我的问题是

  • 故事板设置是添加登录视图的良好实践吗?一些答案建议把登录视图放在一切之前。但只有部分应用程序需要登录。所以这是不合适的
  • 如何返回到上一页或默认主页(在我的例子中是第一个tabbar控制器视图)?应用程序中需要这两种情况

  • 谢谢。

    您好,您是否可以在登录页面后放置“完整”登录视图控制器。因此,将一个segue从您的登录视图控制器(而不是登录按钮)放到右边的新视图控制器(上图中没有新的视图控制器),然后在登录尝试有效时有条件地调用它

    这样,您就可以清楚地划分登录前和登录后看到的内容了吗


    然后,您只需将逻辑添加到该选项卡中的第一个viewController,以检查用户是否已登录,如果已登录,则通过类似的顺序(从第一个VC到有条件启动的新VC)绕过所有路径,直到新登录的view controller。

    没有人有过相同的情况?