2017-01-25 13 views
0

ログインロジックを含むiOSアプリケーションを、特定のユーザーのためにアプリが必要とするすべての情報を保持するカスタム "User"クラスを使用して作成しようとしています。私のアプリはまた、メインインターフェイス用のタブバーコントローラを持っています。しかし、私は、ログイン画面からタブバーコントローラに、次に対応する子ビューコントローラにログインした「ユーザ」を渡す方法について、最良の方法を考え出すのは苦労しています。ご注意ください私はまた、各タブのナビゲーションコントローラが必要です。次のように私の現在のロジックは次のとおりです。Swift 3:TabBarControllerからChild View Controllerにデータを渡す

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

(複数のタブは、単なる一例があります):

のスクリーンショットは、ストーリーボードのセットアップを表現するには、以下の見ることができますMyAccountViewController内の "loggedInUser"変数?

答えて

0

いくつかのオプション:
1.データをストレージに保存するためにNSUserDefaultを使用します。
2.シングルトンを作成します。
3.グローバル変数
任意のものを選択できます。

+0

上記のうちどれが最もプロフェッショナルで効率的だと思いますか? –

+0

@JustinFrazer私は、最も簡単な方法は、子ビューコントローラクラスでパブリックなvarを作成することだと思います。子ビューコントローラを表示する前に、それに応じてvarを設定します。 – jokeman

関連する問題