Swift 3:将数据从TabBarController传递给子视图控制器

时间:2017-01-25 23:02:12

标签: ios uiviewcontroller swift3 tabbarcontroller

我正在尝试使用自定义" User"创建一个包含登录逻辑的iOS应用程序。包含应用程序为特定用户所需的所有信息的类。我的应用程序还有一个主界面的标签栏控制器。但是,我很难找到如何通过登录的最佳方法" User"从登录屏幕到标签栏控制器,然后到相应的子视图控制器。请注意我的每个标签都需要一个导航控制器。我目前的逻辑如下:

LoginViewController.swift:

class LoginViewController: UIViewController {

    ...

    func displayRideFinishedSurvey(loggedInUser: User) -> Void { //user provided valid credentials, time to login
        let sb = UIStoryboard(name: "SuccessfulLogin", bundle: Bundle.main)
        let cc = (sb.instantiateViewController(withIdentifier: "tabBarStoryboard")) as! MyTabBarController
        cc.loggedInUser = loggedInUser // will be configured here for the entire app
        present(cc, animated: true, completion: nil)
    }
}

MyTabBarController.swift:

import UIKit

class MyTabBarController: UITabBarController {

    var loggedInUser: User?

    override func viewDidLoad() {
        ...
    }
}

MyAccountViewController.swift:

import UIKit

class MyAccountViewController: UIViewController {

    var loggedInUser: User?

    override func viewDidLoad() {
        ...
    }
}

下面的屏幕截图可以看到故事板设置:(有多个标签,只是一个示例)

enter image description here

提供的信息:设置" loggedInUser"的最佳方法是什么? MyAccountViewController中的变量?

1 个答案:

答案 0 :(得分:0)

有几种选择:
1.使用NSUserDefault将数据保存到存储中 2.创建一个单身人士 3.全局变量
你可以选择你想要的任何东西。