При использовании view.window? .RootViewController для изменения представления на основе оператора if встроенные контроллеры не активируются - PullRequest
0 голосов
/ 30 апреля 2020

Итак, у меня есть утверждение if, которое имеет 2 результата: rootViewController становится loginViewController или mainSearchViewController. Раскадровка для mainSearchViewController имеет встроенные TabViewController и NavigationViewController. Однако, установив контроллер вида root, я теряю доступ и к TabViewController, и к NavigationViewController, и только к активному mainSearchViewController. Вот мой код:

 func setRootViewController() {
    if Auth.auth().currentUser != nil {
        let mainSearchViewController = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.mainSearchViewController)

        view.window?.rootViewController = mainSearchViewController
        view.window?.makeKeyAndVisible()


    } else {

        let loginSearchViewController = storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.loginViewController) 

        view.window?.rootViewController = loginSearchViewController
        view.window?.makeKeyAndVisible()

Lose access to Tab Bar Controller and Nav Controller he making the root view controller the view on the very right

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

Редактировать: я пытался установить rootViewController для контроллера вкладок, это позволяет мне использовать функциональность вкладок, но у меня все еще нет доступа к Nav Controller. То же самое касается Nav Controller, он работает, когда он является root контроллером представления, но нет функциональности Tab Controller

Редактировать 2: в viewDidLoad() mainSearchViewController navigationController? .IsNavigationBarHidden = false `и у меня есть root контроллер представления в качестве контроллера панели вкладок. Я могу получить доступ к значкам вкладок и увидеть панель навигации, но функция навигации при нажатии на ячейку не работает.

1 Ответ

0 голосов
/ 01 мая 2020

Изменение rootViewController, вероятно, вызывает вашу проблему, поскольку tabViewController, вероятно, не имеет loginViewController в качестве вкладки.

Если вам нужно отобразить loginViewController на основе оператора if, лучше показывать его, используя что-то вроде:

navViewController.pushViewController(loginViewController, animated: true)

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