在 iOS 应用中使用 Google 登录时,通常会使用 Google Sign-In SDK。要实现从 Google 登录注销后导航回登录视图控制器(LoginViewController),你需要执行以下步骤:
以下是一个完整的示例,展示了如何实现这些步骤。
确保你已经按照 Google Sign-In for iOS 的官方文档配置了 Google Sign-In SDK。
在你的视图控制器中,添加一个注销按钮,并实现注销功能。
import UIKit
import GoogleSignIn
class HomeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 添加注销按钮
let signOutButton = UIButton(type: .system)
signOutButton.setTitle("Sign Out", for: .normal)
signOutButton.addTarget(self, action: #selector(signOut), for: .touchUpInside)
signOutButton.frame = CGRect(x: 0, y: 0, width: 100, height: 50)
signOutButton.center = view.center
view.addSubview(signOutButton)
}
@objc func signOut() {
GIDSignIn.sharedInstance.signOut()
// 导航回登录视图控制器
if let loginVC = storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController {
navigationController?.setViewControllers([loginVC], animated: true)
}
}
}
在注销后,使用 navigationController
的 setViewControllers
方法导航回登录视图控制器。
确保你的登录视图控制器在 Storyboard 中设置了一个标识符,例如 "LoginViewController"。
以下是一个简单的登录视图控制器示例:
import UIKit
import GoogleSignIn
class LoginViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 添加 Google 登录按钮
let signInButton = GIDSignInButton()
signInButton.center = view.center
view.addSubview(signInButton)
// 设置 GIDSignIn 代理
GIDSignIn.sharedInstance.delegate = self
GIDSignIn.sharedInstance.presentingViewController = self
}
}
extension LoginViewController: GIDSignInDelegate {
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
print("Error signing in: \(error.localizedDescription)")
return
}
// 登录成功,导航到主视图控制器
if let homeVC = storyboard?.instantiateViewController(withIdentifier: "HomeViewController") as? HomeViewController {
navigationController?.setViewControllers([homeVC], animated: true)
}
}
}
领取专属 10元无门槛券
手把手带您无忧上云