2017-01-25 8 views
0

Я пытаюсь создать приложение iOS, содержащее логику входа, используя пользовательский класс «Пользователь», который содержит всю информацию, необходимую приложению для определенного пользователя. Мое приложение также имеет контроллер панели вкладок для основного интерфейса. Тем не менее, мне сложно найти оптимальный подход к тому, как передать зарегистрированный пользователь «Пользователь» с экрана входа в контроллер панели вкладок, а затем на соответствующие контроллеры дочерних представлений. Обратите внимание, что мне также нужен контроллер навигации для каждой моей вкладки. Моя текущая логика выглядит следующим образом:Swift 3: Передача данных с контроллеров TabBarController на дочерние объекты

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?

ответ

0

Несколько вариантов:
1.Use NSUserDefault для хранения данных на хранение.
2. Создайте синглтон.
3.Глобальная переменная
Вы можете выбрать все, что захотите.

+0

Какой из вышеуказанных вариантов вы считаете наиболее профессиональным/эффективным? –

+0

@JustinFrazer Я думаю, что самый простой способ - создать публичный var в классе контроллеров дочерних представлений. Перед отображением контроллера дочернего представления установите var соответственно. – jokeman

Смежные вопросы