簡體   English   中英

如何在導航欄、標簽欄、視圖控制器之間傳遞數據

[英]How to pass data among Navigation bar, Tab bar, View Controller

我首先使用 GoogleSignIn SDK 作為登錄短語。 然后,我使用以下代碼重定向到我的應用程序的主頁。 self.present(tabController, animated: true, completion: nil)

這是我的應用程序的結構(我使用故事板):

標簽欄控制器

  1. NavigationBarController(主頁):視圖控制器
  2. NavigationBarController(功能一):視圖控制器
  3. NavigationBarController(功能二):視圖控制器
  4. NavigationBarController(配置文件):視圖控制器

現在我已經登錄,我想將數據從 google 傳遞到我的個人資料根視圖控制器。 然而,我不知道該怎么做。

這是我當前的代碼,我已經輸入了 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)。

但是因為它不起作用。 我希望有人能幫我解決這個問題。 非常感謝。

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

我知道對靜態變量有不同的意見,但是只要您在轉到下一個視圖之前進行數據驗證就可以了。

您可能想閱讀此內容以了解更多帶有良好解釋的選項

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM