Я пытаюсь создать приложение 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() {
...
}
}
Скриншот можно увидеть ниже, чтобы представить настройки раскадровки: (Есть несколько вкладок, просто пример)
С информацией: Что бы лучшим подход к созданию переменная «loggedInUser» в MyAccountViewController?
Какой из вышеуказанных вариантов вы считаете наиболее профессиональным/эффективным? –
@JustinFrazer Я думаю, что самый простой способ - создать публичный var в классе контроллеров дочерних представлений. Перед отображением контроллера дочернего представления установите var соответственно. – jokeman