Проблемы с TabBar и NavigationBar - PullRequest
1 голос
/ 17 марта 2019

У меня есть два контроллера представления в TabBar. Я настроил, как будто пользователь вошел в систему, тогда он напрямую показывает TabBar, иначе он показывает loginViewController. Смотри код в AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UserDefaults.standard.register(defaults: ["NSApplicationCrashOnExceptions": true])

        let status = UserDefaults.standard.bool(forKey: "status")

        //StoryBoard Decide
        if (status == false){
            let storyBoard : UIStoryboard = UIStoryboard(name: "Tools", bundle:nil)
            let nextViewController = storyBoard.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
            let navigationController = UINavigationController(rootViewController: nextViewController)
            let appdelegate = UIApplication.shared.delegate as! AppDelegate
            appdelegate.window!.rootViewController = navigationController
        }else {
            let storyBoard : UIStoryboard = UIStoryboard(name: "Tools", bundle:nil)
            let nextViewController = storyBoard.instantiateViewController(withIdentifier: "tabbar") as! UITabBarController
            let navigationController = UINavigationController(rootViewController: nextViewController)
            let appdelegate = UIApplication.shared.delegate as! AppDelegate
            appdelegate.window!.rootViewController = navigationController
        }}

Но когда все работает правильно, когда я прохожу через ViewController, но когда пользователь уже вошел в систему, отображается панель навигации в HomeViewController.

enter image description here

Это моя установка storyBoard. enter image description here

А также как управлять навигацией с помощью TabBar.

1 Ответ

2 голосов
/ 17 марта 2019

Поскольку вы создаете новый контроллер навигации, добавьте панель вкладок в качестве его корневого представления.

Вместо создания UINavigationController вы можете сделать следующее:

Заменить

let nextViewController = storyBoard.instantiateViewController(withIdentifier: "tabbar") as! UITabBarController
let navigationController = UINavigationController(rootViewController: nextViewController)
let appdelegate = UIApplication.shared.delegate as! AppDelegate
appdelegate.window!.rootViewController = navigationController

на:

let nextViewController = storyBoard.instantiateViewController(withIdentifier: "tabbar") as! UITabBarController
self.window?.rootViewController = nextViewController
self.window?.makeKeyAndVisible()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...