Как использовать координатор протокола с TabBar?

я видел несколько статей об этой проблеме, и я не могу найти способ заставить мое приложение работать так, как я хочу. У меня есть шаблон координатора с двумя контроллерами представления, и я хочу настроить панель навигации с большими заголовками. Когда я пытаюсь использовать панель навигации, она не работает. Я не могу установить заголовок или некоторые атрибуты. Вот что я хочу:[изображение панели навигации][1][1]: https://i.stack.imgur.com/WB4I7.png Это мой код:

Делегат сцены:

        func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
    if #available(iOS 15, *) {UINavigationBar.appearance().scrollEdgeAppearance = UINavigationBarAppearance()}
    guard let winScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(windowScene: winScene)
    self.window?.makeKeyAndVisible()

    let navigationController = UINavigationController()
    
    self.window?.rootViewController = navigationController
    let coordinator = MainCoordinator(navigationController: navigationController)
    
    coordinator.start()
  }

Главный координатор:

      class MainCoordinator: Coordinator{
  let tabController = TabBarController()
  let controller1 = EntryListViewController()
  let controller2 = CategoryListViewController()
  
  
  var navigationController: UINavigationController
  
  init(navigationController: UINavigationController) {
    self.navigationController = navigationController
    tabController.setViewControllers([controller1,controller2], animated: false)
    tabController.tabBar.isTranslucent = false
    guard let items = tabController.tabBar.items else {return}
    items[0].title = "Lançamentos"
    items[1].title = "Categorias"
    let images = ["Lancamentos", "Categorias"]
    for i in 0...items.count - 1 {
        items[i].image = UIImage(named: images[i])
    }
    
    tabController.navigationController?.navigationItem.title = "Teste"
    tabController.navigationController?.navigationBar.prefersLargeTitles = true
    tabController.navigationController?.navigationBar.isTranslucent = false
    tabController.navigationController?.navigationBar.isOpaque = false
    controller1.title = "Meus gastos"
    controller2.title = "Categorias"
  }
  
  
  
  func start() {
    self.navigationController.pushViewController(tabController, animated: true)
  }
}

0 ответов

Другие вопросы по тегам