ios - 来自appDelegate performSegue的Swift 3在谷歌登录后无法正常工作

标签 ios swift swift3

我正在尝试实现 Google 登录 及其与登录过程的配合,但在我的应用程序委托(delegate)文件中,我有 didSignInFor 函数,成功登录后在内部关闭,我发送用户从 loginVCfeedVc

然后它转到那一行并打印下一行中的内容但不执行 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 your AppDelegate 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

  1. 单击要打开的 View
  2. 从该 Controller 顶部选择黄色/向左按钮
  3. 现在打开位于右侧的实用工具箱
  4. 现在点击 Show the Identical Inspector
  5. 现在您可以将您的身份作为 StoryBoard Id 提供

Check this answer for more details

关于ios - 来自appDelegate performSegue的Swift 3在谷歌登录后无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44520673/

相关文章:

ios - 在 ember js 模型中使用 Phonegap 存储(sqlite/websql)

ios - Swift容易受到代码注入(inject)的攻击吗?

ios - 返回事件在 swift 3.0 中的哪里

ios - 如何在 Swift 3 中为自定义错误覆盖 localizedDescription?

ios - 类型 'Any'没有下标成员NSIndexPath和indexPath Swift 3

iphone - 滚动瓦片 map 时如何检测瓦片和 Sprite 之间的碰撞?

ios - 按下主页按钮时如何在 spritekit [SWIFT] 中暂停和重新启动 NSTimer.scheduledTimerWithTimeInterval?

ios - 强调字体 swift 的粗体

arrays - 加入多维数组

ios - 如何返回一个零自定义 UITableViewCell