Как передать данные между панелью навигации, панелью вкладок, View Controller - PullRequest
1 голос
/ 01 февраля 2020

Сначала я использую GoogleSignIn SDK для фразы входа. Затем я использую следующий код для перенаправления на домашнюю страницу своих приложений. self.present(tabController, animated: true, completion: nil)

Вот структура моего приложения (я использую раскадровку):

TabBarController

  1. NavigationBarController (домашняя страница): просмотр контроллеров
  2. NavigationBarController (функция 1): просмотр контроллеров
  3. NavigationBarController (функция 2): просмотр контроллеров
  4. NavigationBarController (профиль): просмотр контроллеров

Теперь, когда я вошел в систему в, я хотел бы передать данные из Google в мой профиль root просмотр контроллера. Тем не менее, я не уверен, как это сделать.

Вот мой текущий код, который я вставил в забавный знак c (_ signIn: GIDSignIn !, didSignInДля пользователя: GIDGoogleUser !, withError error: Error!):

let tabController: UITabBarController = self.storyboard?.instantiateViewController(withIdentifier: "homepageVC") as! UITabBarController
        let navController: UINavigationController = self.storyboard?.instantiateViewController(withIdentifier: "homepageVC2") as! UINavigationController
        let vc = navController.viewControllers[0] as! ViewController

        tabController.modalPresentationStyle = .fullScreen
        vc.name = fullName
        self.present(tabController, animated: true, completion: nil)

** где fullName - это глобальная переменная в моем LoginViewController, которая содержит user.fullName (от Google).

Но, конечно, это не работает. Я надеюсь, что кто-то может помочь мне с этим. Большое спасибо.

1 Ответ

0 голосов
/ 01 февраля 2020

Вот что я делаю со входами в такие продукты, как Firebase,

Создайте класс, который обрабатывает все данные для пользователя

class UserClass: {
   static var name: String = ""
   static var email: String = ""
   static var UID: String = ""
   static var youGetTheIdea: String = ""
   static var some_array: [String] = [""]

}

Затем вы можете вызвать это из любого класса, позвонив,

//To set var
UserClass.name = Auth().Auth.currentuser.username
//To get var
print(UserClass.name)

Я знаю, что существуют разные мнения о состоянии c var (s), но это нормально, если вы выполняете проверку данных перед переходом к следующему представлению.

Возможно, вы хочу прочитать это, чтобы узнать больше вариантов с хорошими объяснениями

https://learnappmaking.com/pass-data-between-view-controllers-swift-how-to/

...