Swift: перейти к другому контроллеру представления после входа в Google - PullRequest
0 голосов
/ 18 марта 2019

После успешного входа пользователей я хочу, чтобы на экране автоматически отображалось представление контроллера вкладок.

Теперь я закончил интеграцию в Google Sign In. Но после входа представление возвращается к исходному контроллеру представления.

Моя раскадровка выглядит следующим образом, синий вид внутри начального View Controller - это кнопка входа в Google.

Ниже моя didSignInFor функция:

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!,
          withError error: Error!) {
    if let error = error {
        print("\(error.localizedDescription)")
    } else {
        //...
    }
}

Я знаю, что должен добавить коды в else{}, но все еще не уверен, как это сделать.

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

Для вашего случая прежде всего вам нужно создать класс для вашего UITabBarController, который подтвердит UITabBarController, а не UIViewController что-то вроде:

class TabBarConroller: UITabBarController {

TabBarConroller - ваш новый файл .swift. Теперь перейдите к вашей раскадровке и нажмите на TabBarController, затем нажмите Identity Inspector и назначьте ему только что созданный класс.

Затем вам нужно инициировать этот класс, если пользователь успешно прошел аутентификацию с кодом ниже:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tabbarVC = storyboard.instantiateViewController(withIdentifier: "TabbarIdentifier") as! UITabbarController
self.present(tabbarVC, animated: false, completion: nil)

И еще одну вещь, которую вам нужно назначить в Storyboard ID от Identity Inspector, которая будет TabbarIdentifier.

Итак, ваш код будет выглядеть так:

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!,
      withError error: Error!) {
    if let error = error {
        print("\(error.localizedDescription)")
    } else {
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let tabbarVC = storyboard.instantiateViewController(withIdentifier: "TabbarIdentifier") as! UITabbarController
        self.present(tabbarVC, animated: false, completion: nil)
    }
}
0 голосов
/ 18 марта 2019
var loginType : String = ""
var tokenFb : String = ""
var email : String = ""
var googleName : String = ""
// Google Integration

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!,
          withError error: Error!) {
    if let error = error {
        print("\(error.localizedDescription)")
    } else {

        self.loginType = "gmail"
        // Perform any operations on signed in user here.
        tokenFb = user.userID // For client-side use only!
        let idToken = user.authentication.idToken // Safe to send to the server
        googleName = user.profile.name
        let givenName = user.profile.givenName
        let familyName = user.profile.familyName
        email = user.profile.email

        if user.profile.hasImage
        {
            let imageUrl = signIn.currentUser.profile.imageURL(withDimension: 150)

            image = (imageUrl?.absoluteString)!
            print(" image url: ", image)
            self.profileURL = image
        }
        self.loginSocialAPI()
    }
}

self.logSocialApi () - это API, через который я могу войти, и в этом API нужно указать путь к конкретному viewController.

...