我试图在使用 googleSignIn 登录时显示登录用户的用户名。googleSignIn 已在 appdelegate 中设置,要显示的用户名位于启动登录的 viewController 中。
出于一个奇怪的原因,我可以“打印”从 appDelegate 传入的名称,但不能设置 UILable.text。就此而言,我什至无法将 UILabel.text 设置为 didSet 内部的任何静态内容。
//APP DELEGATE
var vc: ViewController?
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
if (error as NSError).code == GIDSignInErrorCode.hasNoAuthInKeychain.rawValue {
print("The user has not signed in before or they have since signed out.")
} else {
print("\(error.localizedDescription)")
}
return
}
vc?.userID = user.profile.name
// Perform any operations on signed in user here.
let userId = user.userID // For client-side use only!
}
// MAIN VIEW CONTROLLER
var userID: String? {
didSet{
DispatchQueue.main.async {
if let name = self.userID {
self.welcomeLabel?.text = name
}
}
}
}
@IBOutlet weak var welcomeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
GIDSignIn.sharedInstance()?.presentingViewController = self
GIDSignIn.sharedInstance()?.restorePreviousSignIn()
}