【问题标题】:How to pass data among Navigation bar, Tab bar, View Controller如何在导航栏、标签栏、视图控制器之间传递数据
【发布时间】:2020-05-18 02:13:50
【问题描述】:

我首先使用 GoogleSignIn SDK 作为登录短语。然后,我使用以下代码重定向到我的应用程序的主页。 self.present(tabController, animated: true, completion: nil)

这是我的应用程序的结构(我使用故事板):

TabBarController

  1. NavigationBarController(主页):视图控制器
  2. NavigationBarController(功能 1):视图控制器
  3. NavigationBarController(功能 2):视图控制器
  4. NavigationBarController(配置文件):视图控制器

现在我已经登录,我想将数据从谷歌传递到我的个人资料根视图控制器。然而,我不知道该怎么做。

这是我当前的代码,我已经输入了 func sign(_ signIn: GIDSignIn!, didSignInFor user: 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)。

但是因为,它不起作用。我希望有人可以帮助我解决这个问题。非常感谢。

【问题讨论】:

  • 这是 iOS 中的一个大话题(就像在大多数框架中一样)。对于只有一个用户并且每个人都需要知道的用户数据,请使用单例。 stackoverflow.com/a/26743597/294949

标签: ios swift uinavigationcontroller uitabbarcontroller viewcontroller


【解决方案1】:

这就是我使用 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)

我知道对于静态 var(s) 存在不同的意见,但只要您在移至下一个视图之前进行数据验证,这没关系。

您可能想阅读这篇文章以了解更多带有良好解释的选项

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2015-02-10
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多