繁体   English   中英

在Swift 3中登录后如何返回首页或上一个ViewController

[英]How to go back to home page or previous viewcontroller after login in swift 3

我正在开发一个应用程序,其中导航控制器连接到了标签栏控制器,另一些ViewController附加到了标签栏控制器,如图所示:

在此处输入图片说明

现在,我想仅在用户单击第二个选项卡而不登录时才向用户显示登录页面。因此,在第二个选项卡控制器中,我具有以下内容:

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)

它还将用户带回到“ minePage”,但仅显示导航栏,而不显示标签栏。 我还尝试在情节提要中添加轻松的序列,并在first view controller中添加一个功能:

@IBAction func prepareForUnwindWithSegue(segue: UIStoryboardSegue){
}

并尝试了这个:

self.dismiss(animated: true, completion: nil)

登录后什么也没发生。我的问题是

  1. 故事板设置添加登录视图的好习惯吗? 一些stackoverflow答案建议将登录视图放在一切之前。 但只有部分应用程序需要登录。 因此不适合。
  2. 如何返回上一页或默认主页(在我的情况下是第一个标签栏控制器视图)? 应用程序中需要两种情况。

谢谢。

您好,您不能仅将“完整”的登录视图控制器放在登录页面之后。 因此,将登录视图控制器(而非登录按钮)的序号放到右侧的新视图控制器(上图中未显示的新视图控制器)中,然后如果登录尝试有效,则有条件调用它吗?

这样,您可以清楚地区分登录之前和登录之后看到的内容?

然后,您只需在该选项卡中的第一个viewController中添加逻辑,以检查用户是否已登录,如果已登录,则通过类似的步骤(从第一个VC到新的VC),一直绕到新的登录视图控制器。一个有条件被解雇的人)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM