我已成功將Google Sign-In集成到我的AppDelegate.swift文件的iOS應用程序中,並且可以成功檢測到成功登錄(通過在控制檯上打印「success」 )。問題是,在成功登錄後,當我想要進入應用程序的下一個屏幕時,我回到Google Sign-In頁面。Swift:在AppDelegate.swift中執行Segue
AppDelegate.swift文件無法識別performSegue函數,因爲它是UIViewController類的函數(請糾正我,如果我錯了)。爲了解決這個問題,我創建的視圖控制器文件中的全局變量,這樣,每當此值被改變SEGUE將執行:
AppDelegate.swift:
var userSignedInGlobal = "n/a"
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {
// A bunch of code that implements the Google Sign in ...
print("Successfully logged into Google.", user)
userSignedInGlobal = "success"
}
然後我InitialViewController.swift文件:
class InitialViewController: UIViewController, GIDSignInUIDelegate {
var userSignedIn = userSignedInGlobal {
didSet {
performSegue(withIdentifier: "segueOne", sender: self)
}
}
// A bunch of irrelevant code.
}
這沒有工作,我覺得這不工作的原因是userSignedInGlobal在InitialViewController.swift文件被通過引用傳遞 - 因此即使它的價值變化,userSignedIn的價值呢不是cha恩格(再次,如果我錯了,請糾正我)。
要解決這個問題,我改變了我的InitialViewController.swift文件,如下所示:
var userSignedIn = userSignedInGlobal {
didSet {
doSegue()
}
}
class InitialViewController: UIViewController, GIDSignInUIDelegate {
func doSegue() {
performSegue(withIdentifier: "segueOne", sender: self)
}
// A bunch of irrelevant code.
}
這給了我一個錯誤,在第三行:「未解決的標識符的使用‘doSegue()’」
當登錄成功時,我不知道如何執行segue。任何幫助將不勝感激,在此先感謝。
PS:請注意,您的initialVC可以是GIDSignInDelegate和GIDSignInUIDelegate。這簡化了一些事情,你可以找到很多使用這種方法的例子。然而,如果你想讓你的AppDelegate充當GIDSignInDelegate並且你的VC充當GIDSignInUIDelegate(如你的代碼片段所示),那麼你可能需要看看使用NotificationCenter從AppDelegate的signIn func傳遞消息,到你的VC。觀察者(可能在您的VC中)可以執行一次執行任務或其他任何事情。 – ozzieozumo
感謝您的回覆!我嘗試將Google Sign In代碼移到我的VC中,但由於某種原因,該函數從未被調用......我爲什麼會感到困惑。你有什麼想法? –