Я программно настроил пользовательский 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?
Куда следует переходить к контроллеру входа, чтобы принудительно войти в систему, когда он еще не вошел в систему. Хотите войти в систему, чтобы пользователь не мог использовать приложение, если не вошел в систему.