Donc, quand j'ai OptionsViewController
comme rootViewController
dans le 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()
... définir le titre de la OptionViewController
fonctionne si je fais ceci dans viewDidLoad()
:
title = "Route Options"
Mais lorsque j'appuie sur OptionsViewController
dans la pile de navigation, le titre ne s'affiche pas.
C'est à dire. si je commence avec une vue différente en tant que rootViewController
dans 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()
Et dans HomeViewController
je pousse ma OptionViewController
comme ceci:
let optionsVC = OptionsViewController()
navigationController?.pushViewController(optionsVC, animated: true)
Le titre ne s'affiche pas!
La seule façon dont j'ai réussi à faire apparaître le titre est de le faire (dans OptionViewController
)
navigationController?.navigationBar.topItem?.title = "Route Options"
Mais il apparaît comme le bouton de retour plutôt qu'au milieu, ce qui n’est pas ce que je veux.
Si quelqu'un pouvait me dire comment définir le titre de sorte qu'il se trouve au milieu de la barre de navigation lorsqu'il est placé sur la pile de navigationController, ce serait génial!
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"
}
Vous devez définir le fichier navigationItem.title sur la valeur souhaitée. Si vous voulez une image que vous définissez navigationItem.titleView
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Your title here"
}
vous devez d’abord définir la couleur UINavigationBar
et la couleur du texte. essayez ceci dans didFinishLaunchingWithOptions
.
let barAppearance = UINavigationBar.appearance()
barAppearance.barTintColor = UIColor.blue
barAppearance.tintColor = UIColor.white
barAppearance.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
si vous voulez supprimer la chaîne après le backbutton .__, ajoutez-les aussi
let barItemAppearace = UIBarButtonItem.appearance()
barItemAppearace.setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), for:UIBarMetrics.default)
Et définissez simplement votre titre dans viewDidLoad()
ou
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.title = "Your Title"
}
Pour les autres utilisateurs basés sur le titre, n'oubliez pas de définir votre classe ViewController dans IB sur le fichier Swift approprié.
Après cela, j'ai pu définir le titre sans problème en utilisant
self.navigationItem.title = "my title"
ou
self.title = "my title"
Essayez le:
Dans HomeViewController
:
let optionsVC = OptionsViewController()
navigationController?.viewControllers = [optionsVC]
Et dans votre OptionsViewController
:
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.isTranslucent = false
navigationItem.title = "Your Title"
}
Il suffit d'ajouter la ligne ci-dessous pour définir le titre de l'élément de navigation.
self.title = "Title 1"