Swift - UITabBarContorller Начальный вид - когда принудительно запускать экран входа в систему? - PullRequest
0 голосов
/ 27 апреля 2018

Я программно настроил пользовательский UITabBarControler с тремя вкладками, каждая из которых представляет собой UIViewController со встроенным UINavigationController.

Я не использую раскадровки. Я установил пользовательский контроллер вкладок в качестве корня в AppDelegate

window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController =  CustomTabBarController()

Приложение работает нормально, я получаю три вкладки и могу перемещаться между ними.

пример заполнения вкладок (в viewDidLoad контроллера панели вкладок клиента)

let ordersVC = OrdersViewController()  // where Orders is a UIViewController
ordersVC.title = "Orders"
ordersVC.view.backgroundColor = UIColor.white
let ordersVCNavi = UINavigationController(rootViewController: ordersVC)
ordersVCNavi.navigationBar.tintColor = UIColor.black
...
viewControllers = [homeVCNavi, inventoryVCNavi, ordersVCNavi]

Теперь мне нужно сначала проверить, вошел ли пользователь в систему (используя Firebase). Я могу легко проверить, уже вошли (Firebase cached) или не вошли в систему.

Я делаю это, зарегистрировался в AppDelegate

Моя проблема, когда мне нужно принудительно войти в систему (перейти к контроллеру представления входа в систему) Я не могу найти место, которое работает.
- попытался сделать вызов в пользовательском UITabBarController didLoad, и код игнорируется - попытался сделать вызов в didLoad, и willAppear в контроллере начальной вкладки также игнорируется

Я могу поместить кнопку на начальную вкладку, и эта кнопка действительно запустит контроллер входа в систему. Так что я могу добраться до контроллера входа с помощью нажатия кнопки.

после нажатия кнопки я могу выполнить этот код, и контроллер входа покажет

let vc = LoginViewController()
self.navigationController?.pushViewController(vc, animated: false)

Но если я знаю, что мне нужно принудительно войти в систему, и я пытаюсь сделать тот же код, приведенный выше в viewDidLoad() или viewWillAppear() в начальном контроллере вкладок или в пользовательском UITabBarController, то push игнорируется. Ничего не происходит.

Каков наилучший метод принудительного использования экрана входа в систему, когда начальный вид - tabbarcontroller?

Куда следует переходить к контроллеру входа, чтобы принудительно войти в систему, когда он еще не вошел в систему. Хотите войти в систему, чтобы пользователь не мог использовать приложение, если не вошел в систему.

1 Ответ

0 голосов
/ 27 апреля 2018

в didFinishLaunchingWithOptions

 if loggedIn {
      window?.rootViewController = CustomTabBarController()
 }
 else {
      window?.rootViewController =  LoginViewController()
 }

после успешного входа в систему

UIApplication.shared.keyWindow?.rootViewController  = CustomTabBarController()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...