Je veux changer le titre du bouton arrière en n'importe quel nom dans Swift 3. J'ai essayé de nombreuses façons mais aucune d'entre elles n'a fonctionné pour moi.
self.navigationItem.backBarButtonItem?.title="Title"
self.navigationController?.navigationItem.backBarButtonItem?.title="Title"
Juste pour information, j'ai écrit ci-dessous le code dans appdelegate.
let backImage : UIImage = UIImage(named:"backArrow")!
UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, 0), for: .default)
IQKeyboardManager.sharedManager().enable = true
self.window?.backgroundColor = UIColor.white
Le nom du bouton de retour de l'élément de navigation sera le même que le titre du contrôleur de vue précédent qui le pousse vers la pile de navigation :)
Donc, si VC A pousse VC B, le bouton de retour dans VC B sera A.
Donc tout ce que vous pouvez faire est de changer le titre du viewController précédent avant de pousser le nouveau viewController en utilisant du code :)
self.navigationItem.title = "ABCD"
Et dans ViewWillAppear de VC A, vous pouvez rétablir le titre tel qu'il était auparavant :)
self.navigationItem.title = "Back to xyz"
Cela étant dit, si vous ne voulez pas de tout ce cirque :) vous pouvez simplement masquer le bouton de retour par défaut en utilisant,
self.navigationItem.hidesBackButton = true
dans votre VC B, créez un élément UIBarButton, définissez le titre que vous souhaitez définir, puis définissez-le comme leftBarButtonItem :) en utilisant,
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("ABCD", comment: "ABCD"), style: .plain, target: self, action:#selector(self.abcdTapped:)
bien sûr maintenant cela ne montrera pas l'icône "<" :) Maintenant, si vous le voulez aussi, vous pouvez l'ajouter comme image à l'élément de bouton de la barre arrière :) mais c'est encombrant :)
J'espère que ça aide :)
Vous devrez définir la propriété backBarButtonItem
de la navigationItem
de la viewController
à partir de laquelle vous poussez ladite viewController
.
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: nil, action: nil)
Cependant, vous devez définir cela pour chaque viewController
.
Ceci est le chemin:
extension UINavigationController {
func addCustomBackButton(title: String = "Back") {
let backButton = UIBarButtonItem()
backButton.title = title
navigationBar.topItem?.backBarButtonItem = backButton
}
}
Dans Swift 3. mettez le code ci-dessous dans la méthode appdelegate
didFinishLaunchingWithOptions
ça fonctionne parfaitement pour moi
let backImage = UIImage(named: "BackNavigation")?.withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorImage = backImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImage
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -80.0), for: .default)
La dernière ligne supprimera le titre de Navigation Back Button
si vous ne voulez pas supprimer le titre, il vous suffit de le commenter
Je n'ai pas trouvé la réponse que je cherchais donc je partage avec vous ma solution.
Parfois, vous devez modifier le texte du bouton de retour dans le ViewController parent et non dans le ViewController où semble être défini le bouton de retour, rappelez-vous qu'un contrôleur de navigation empile les ViewControllers l'un après l'autre.
Dans mon cas, je l'ai fait sur la fonction prepare(for segue: )
du "ParentViewController
":
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showChildViewController" {
if let childViewController = segue.destination as? ChildViewController {
let backItem = UIBarButtonItem()
backItem.title = "Back"
navigationItem.backBarButtonItem = backItem
}
}
Essayez les étapes suivantes pour définir l'image sur votre bouton de retour.
Sortie:
Étape 1:
Ajoutez le code suivant à votre AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
var backButtonImage = UIImage(named: "Your Image Name")
backButtonImage = backButtonImage?.stretchableImage(withLeftCapWidth: 0, topCapHeight: 0)
UIBarButtonItem.appearance().setBackButtonBackgroundImage(backButtonImage, for: .normal, barMetrics: .default)
UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
return true
}
Étape 2:
Ajoutez le code suivant à votre MainVC
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Title 1"
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
}
Étape 3:
Ajoutez le code suivant à votre DestVC ou 2ndVC
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
title = "Title 2"
navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white, NSFontAttributeName:UIFont(name:"HelveticaNeue", size: 20)!]
}
Étape 4:
Sélectionnez votre barre de navigation dans votre StoryBoard et goto Inspecteur d'attributs . Sous Élément de navigation changez votre Retour Nom du bouton entrez un espace vide ou par programmation créer un bouton de retour avec un titre simple ..
Étape 5:
Ajoutez une image d'icône à vos actifs. 1x29pt , 2x58pt et 3x87pt . Je ne suis pas sûr de la taille de l'image de l'actif.Vérifiez avec Apple doc sur la classe de taille ..
Mise à jour:
Ma réponse similaire liée à ce post.
Comment personnaliser le symbole de navigation arrière et le texte de navigation arrière?