#swift
Вопрос:
Каждый из представленных контроллеров представления должен представлять свой собственный заголовок панели навигации — я программно создаю заголовки — но как их можно передать функции CBFlashyTabBarController, аналогичной массиву viewControllers
. В настоящее время контроллер панели навигации представлен вообще без заголовков.
let test1VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Test1")
Следующий элемент навигации.заголовок не отображается после выполнения pushViewController.
test1VC.navigationItem.title = "Test1"
test1VC.tabBarItem = UITabBarItem(title: "Test1", image: #imageLiteral(resourceName: "img1TabLarge"), tag: 0)
let test2VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "0")
Следующий элемент навигации.заголовок не отображается после выполнения pushViewController.
test1VC.navigationItem.title = "Test2"
test1VC.tabBarItem = UITabBarItem(title: "Test2", image: #imageLiteral(resourceName: "img2TabLarge"), tag: 0)
let tabBarController = CBFlashyTabBarController()
let controllers = [test1VC, test2VC]
tabBarController.viewControllers = controllers
navigationController?.pushViewController(tabBarController, animated: true)
Комментарии:
1. Заголовок является свойством ViewController, а не элементом навигации. Вы устанавливаете его не в том месте.
2. Не могли бы вы показать мне пример того, как назначить заголовок навигации каждому контроллеру просмотра?
Ответ №1:
Вы не создаете UINavigationController, вот почему. При использовании TabBarController лучше использовать отдельный навигационный контроллер для каждой вкладки и вместо того, чтобы нажимать ViewController, представьте TabBarController над текущим VC.
let test1VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Test1")
test1VC.navigationItem.title = "Test1"
test1VC.tabBarItem = UITabBarItem(title: "Test1", image: #imageLiteral(resourceName: "img1TabLarge"), tag: 0)
let test2VC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "0")
let controller1 = UINavigationController(rootViewController: test1VC)
let controller2 = UINavigationController(rootViewController: test2VC)
let tabBarController = CBFlashyTabBarController()
let controllers = [controller1, controller2]
tabBarController.viewControllers = controllers
tabBarController.modalPresentationStyle = .fullScreen
self.present(tabBarController, animated: true, completion: nil)