Я создал UITabBarController программно в AppDelegate с 4 контроллерами представления (используя .xib). Когда пользователь нажимает какую-то кнопку на ViewController (VC-A), он представляет другой VC (VC-B) и покрытую панель вкладок. Поэтому я хочу, чтобы у VC-B была вкладка на кнопке.

Я пытался добавить VC-B в качестве дочернего элемента tabbarcontroller. Я попытался .present (vc) и .show (vc) на обоих: VC-A и VC-A.TabBarController

Создание контроллеров в AppDelegate:

 let controllers = [tabViewController1,tabViewController2,tabViewController3,tabViewController4]
 tabBarController.viewControllers = controllers
 window?.rootViewController = tabBarController

Представляя в ВК-А

self.tabBarController?.present(controller, animated: false, completion: nil)
2
Grigory Bochkarev 2 Май 2019 в 22:11

3 ответа

Лучший ответ

Решение состоит в том, чтобы встроить каждый VC в navigationController, а затем добавить его в TabBarController.

let vc1 = ViewController1()

let navController1 = UINavigationController(rootViewController: vc1)
navController.isNavigationBarHidden = true

let controllers = [navController1, navController2, navController3, navController4]
tabBarController.viewControllers = controllers 

window?.rootViewController = tabBarController

Тогда позвони

self.navigationController? .pushViewController (контроллер, анимированный: правда)

Для отображения ВК с вкладкой

0
Grigory Bochkarev 15 Май 2019 в 13:02

Щелкните правой кнопкой мыши и перетащите из контроллера панели вкладок в раскадровке в VC-B. это должно создать вкладку в нижней части вашего VC-A и VC-B, чтобы переходить туда-сюда без необходимости реализовывать какой-либо внутренний код, если вы не хотите анимировать

0
naproton 2 Май 2019 в 19:43

enter image description here

Я нажму красную кнопку входа внизу картинки и попытаюсь войти. Кнопка входа => "" "

После этого авторизуйтесь.

let moreVC = self.storyboard?.instantiateViewController(withIdentifier: "MoreViewController") as! MoreViewController

                moreVC.definesPresentationContext = true
                moreVC.modalPresentationStyle = .fullScreen
                let navController = UINavigationController(rootViewController: moreVC)

                self.present(navController, animated: true, completion: nil)

Если вход в систему происходит без ошибок, приведенный выше код будет вызван для отображения экрана после завершения входа.

Если поток продолжается как код выше, появляется этот экран.

enter image description here

Показанный экран не является полноэкранным, и панель вкладок внизу исчезла. Экран, который я хочу, это экран ниже.

enter image description here

Как я могу представить панель вкладок при представлении экрана?

0
김민식 19 Янв 2020 в 02:57