我正在尝试实现 Google 登录 及其与登录过程的配合,但在我的应用程序委托(delegate)文件中,我有 didSignInFor
函数,成功登录后在内部关闭,我发送用户从 loginVC
到 feedVc
。
然后它转到那一行并打印下一行中的内容但不执行 Segue。
这是代码:
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
print("Successfully logged into google", user)
guard let idToken = user.authentication.idToken else {return}
guard let accessToken = user.authentication.accessToken else {return}
let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)
Auth.auth().signIn(with: credential) { (user, error) in
if error != nil{
print("ANKIT : Unable to authenticate with firebase")
} else{
guard let uid = user?.uid else { return }
KeychainWrapper.standard.set(uid, forKey: KEY_UID)
self.window?.rootViewController?.performSegue(withIdentifier: "goToFeed", sender: nil)
print("ANKIT : Successfully authenticated with firebase for google")
}
}
}
谁能帮我解决这个错误?
无法弄清楚为什么 segue 不起作用..或者如果有人遇到这个问题并且他们弄清楚了请分享解决方案。任何帮助将不胜感激。
最佳答案
From the AppDelegate class you can not
perform segue
. So this line will never work from yourAppDelegate
class.
self.window?.rootViewController?.performSegue(withIdentifier: "goToFeed", sender: nil)
你需要简单
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let scheduleController = storyboard.instantiateViewController(withIdentifier: "yourIdentiFier")
self.window!.rootViewController = scheduleController
self.window!.makeKeyAndVisible()
您可以从 Main.storyboard 向您的 Controller 提供标识符,请按照以下步骤操作。
打开主 Storyboard
- 单击要打开的 View
- 从该 Controller 顶部选择黄色/向左按钮
- 现在打开位于右侧的实用工具箱
- 现在点击 Show the Identical Inspector
- 现在您可以将您的身份作为 StoryBoard Id 提供
关于ios - 来自appDelegate performSegue的Swift 3在谷歌登录后无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44520673/