Я создал 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)
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 (контроллер, анимированный: правда)
Для отображения ВК с вкладкой
Щелкните правой кнопкой мыши и перетащите из контроллера панели вкладок в раскадровке в VC-B. это должно создать вкладку в нижней части вашего VC-A и VC-B, чтобы переходить туда-сюда без необходимости реализовывать какой-либо внутренний код, если вы не хотите анимировать
Я нажму красную кнопку входа внизу картинки и попытаюсь войти. Кнопка входа => "" "
После этого авторизуйтесь.
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)
Если вход в систему происходит без ошибок, приведенный выше код будет вызван для отображения экрана после завершения входа.
Если поток продолжается как код выше, появляется этот экран.
Показанный экран не является полноэкранным, и панель вкладок внизу исчезла. Экран, который я хочу, это экран ниже.
Как я могу представить панель вкладок при представлении экрана?
Похожие вопросы
Новые вопросы
swift
Swift - это безопасный, быстрый и выразительный язык программирования общего назначения, разработанный Apple Inc. для своих платформ и Linux. Swift с открытым исходным кодом. Используйте тег только для вопросов о языковых функциях или необходимости кода в Swift. Используйте теги [ios], [ipados], [macos], [watch-os], [tvos], [cocoa-touch] и [cocoa] для (не зависящих от языка) вопросов о платформах или фреймворках.