ログインロジックを含む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() {
...
}
}
設定への最善のアプローチがどうなるか:提供された情報で
(複数のタブは、単なる一例があります):
のスクリーンショットは、ストーリーボードのセットアップを表現するには、以下の見ることができますMyAccountViewController内の "loggedInUser"変数?
上記のうちどれが最もプロフェッショナルで効率的だと思いますか? –
@JustinFrazer私は、最も簡単な方法は、子ビューコントローラクラスでパブリックなvarを作成することだと思います。子ビューコントローラを表示する前に、それに応じてvarを設定します。 – jokeman