performSegue 在检查用户是否已通过身份验证时无法使用 FireBase Swift 3/4

performSegue not working FireBase while checking the user is authenticated Swift 3/4

我刚刚完成了 letsbuildthatapp 关于 firebase 与社交登录混合的教程视频。

如果用户已经通过身份验证,我目前正在尝试执行 segue。

我在 if 和 performSegue 之后打印了一些东西,因为我正在使用它进行测试。

有我的代码

func verifDejaConnecter() {
    if Auth.auth().currentUser?.uid != nil {
        performSegue(withIdentifier: "segueAccueilToPres", sender: nil)
        print("test")
    } else {
        return
    }
}

mySegue 已创建并可以运行,但此处没有附加任何内容。

在控制台中,我可以看到 if 中打印的测试结果......但没有任何移动

试试这个:

func verifDejaConnecter() {
  if Auth.auth().currentUser?.uid != nil {
    DispatchQueue.main.async {
      self.performSegue(withIdentifier: "segueAccueilToPres", sender: self)
        print("test")
    }
  } else {
    return
  }
}

如果您想在用户登录后打开应用程序时显示不同的控制器,我建议您实例化一个不同的控制器...这是我为此使用的代码。 (在 AppDelegate 中)

if ((Auth.auth().currentUser) != nil)
    {
        initialViewController = mainStoryboard.instantiateViewController(withIdentifier: "tabBarController") as! UITabBarController // or UIViewController depending on your setup.
    }
    else
    {
        initialViewController = mainStoryboard.instantiateViewController(withIdentifier: "LoginController") as!
        LoginController // or your login controller.
    }

    self.window?.rootViewController = initialViewController

    self.window?.makeKeyAndVisible()

其中 "LoginController" 和 "tabBarController" 您需要将这些输入到 StoryBoard Identity inspector Identity、StoryBoard Identity 下。