¿El título del controller de navigation no aparece?

Entonces, cuando tengo mi OptionsViewController como rootViewController en AppDelegate didFinishLaunchingWithOptions

 let rootVC = OptionsViewController() let navigationController = UINavigationController(rootViewController: rootVC) navigationController.navigationBar.barTintColor = .white navigationController.navigationBar.isTranslucent = false navigationController.navigationBar.tintColor = .black self.window = UIWindow(frame: UIScreen.main.bounds) self.window!.rootViewController = navigationController self.window?.makeKeyAndVisible() 

… la configuration del título del OptionViewController funciona si hago esto en viewDidLoad() :

  title = "Route Options" 

introduzca la descripción de la imagen aquí

Pero cuando OptionsViewController en la stack de navigation, el título no aparece.

Es decir, si comienzo con una vista diferente como rootViewController en AppDelegate :

  let rootVC = HomeViewController() let navigationController = UINavigationController(rootViewController: rootVC) navigationController.navigationBar.barTintColor = .white navigationController.navigationBar.isTranslucent = false navigationController.navigationBar.tintColor = .black self.window = UIWindow(frame: UIScreen.main.bounds) self.window!.rootViewController = navigationController self.window?.makeKeyAndVisible() 

Y en OptionViewController My OptionViewController así:

  let optionsVC = OptionsViewController() navigationController?.pushViewController(optionsVC, animated: true) 

¡El título no aparece!

introduzca la descripción de la imagen aquí

La única forma en que he logrado que el título aparezca es haciendo (en OptionViewController )

 navigationController?.navigationBar.topItem?.title = "Route Options" 

Pero aparece como el button de retroceso en lugar de en el medio, que no es lo que quiero.

introduzca la descripción de la imagen aquí

Si alguien pudiera decirme cómo podría configurar el título para que esté en el centro de la barra de navigation cuando se presione en la stack de navigationControl, ¡sería genial!

Código

AppDelegate.swift

 class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let rootVC = HomeViewController() let navigationController = UINavigationController(rootViewController: rootVC) let barAppearance = UINavigationBar.appearance() barAppearance.barTintColor = UIColor.blue barAppearance.tintColor = UIColor.white barAppearance.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white] self.window = UIWindow(frame: UIScreen.main.bounds) self.window!.rootViewController = navigationController self.window?.makeKeyAndVisible() return true } 

HomeViewController.swift

 class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, DestinationDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let optionsVC = OptionsViewController() self.definesPresentationContext = false //else going to try and present optionVC on homeVC when in optionVC navigationController?.pushViewController(optionsVC, animated: true) } tableView.deselectRow(at: indexPath, animated: true) } } 

OptionsViewController.swift

 class OptionsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, DestinationDelegate, SearchBarCancelDelegate,UISearchBarDelegate, CLLocationManagerDelegate { override func viewDidLoad() { self.title = "Route Options" } 

primero debes configurar el color del UINavigationBar y el color del text. intente esto en didFinishLaunchingWithOptions .

 let barAppearance = UINavigationBar.appearance() barAppearance.barTintColor = UIColor.blue barAppearance.tintColor = UIColor.white barAppearance.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white] 

Si quieres eliminar la cadena después de la tecla de retroceso, agrega estos también.

 let barItemAppearace = UIBarButtonItem.appearance() barItemAppearace.setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), for:UIBarMetrics.default) 

Y simplemente configure su título en viewDidLoad() o

  override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.title = "Your Title" } 

Debe configurar el elemento navigationItem.title al valor deseado. Si desea una image, configure navigationItem.titleView

 override func viewDidLoad() { super.viewDidLoad() self.navigationItem.title = "Your title here" } 

Simplemente agregue la siguiente línea para configurar el título para el elemento de navigation.

 self.title = "Title 1" 

Intentalo:

En HomeViewController :

 let optionsVC = OptionsViewController() navigationController?.viewControllers = [optionsVC] 

Y en su OptionsViewController :

 override func viewDidLoad() { super.viewDidLoad() navigationController?.navigationBar.isTranslucent = false navigationItem.title = "Your Title" }