Отсутствует Заголовок Панели Навигации

#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)