Swift - Comment masquer le bouton de retour dans l'élément de navigation?


103

À l'heure actuelle, j'ai deux contrôleurs de vue. Mon problème est que je ne sais pas comment masquer le bouton de retour après la transition vers le deuxième contrôleur de vue. La plupart des références que j'ai trouvées sont en Objective-C. Comment le coder dans Swift?

Masquer le code du bouton retour dans Objective-C

[self.navigationItem setHidesBackButton:YES animated:YES];

Réponses:


366

Selon la documentation pour UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true);

30
le sarcasme est gratuit.
Greg du

58
Cela pourrait vous effrayer @ Paulw11, mais le fait est de taper "Swift hide back button" dans Google et de venir ici - comme je viens de le faire - est beaucoup plus rapide que de parcourir les rames de texte de la documentation officielle.
Joseph Beuys 'Mum

4
Alors que le nom du bouton de retour est défini dans le premier contrôleur de vue, il peut être intéressant de noter que le code pour le masquer doit être implémenté dans le deuxième contrôleur de vue (celui affichant le bouton).
XLE_22

38

Si vous utilisez un UITabBarController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}

Pareil pour moi, mais j'aimerais comprendre pourquoi. Quelqu'un sait-il quelle est la différence entre la réponse acceptée et cette approche? La seule chose à laquelle je peux penser est le modèle d'héritage par rapport à une version statique de la barre de navigation.
Helmut Granda

1
@HelmutGranda Si vous remarquez que Bruno utilise un contrôleur de barre d'onglets, c'est la différence. Dans le cas des réponses acceptées, le VC est probablement intégré dans un contrôleur de navigation.
cloudcal

@cloudcal Je n'utilise pas de tabBar, mais les deux réponses ont fonctionné. Tous deux ont caché le bouton de retour. Je pensais qu'ils se comporteraient différemment si le viewController était à l'écran , puis je voulais masquer le bouton de retour. Encore une fois, ils ont tous deux agi de la même manière. Je n'ai pas pu trouver de différence entre eux. Je dis que la réponse de Bruno est incorrecte. Plutôt pour le pur navigationController, cela ne fait aucune différence. Je n'ai pas essayé tabBarController
Honey

20

Rapide

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true

Il est clair que navigationItem.hidesBackButton = true est la bonne réponse. S'il y a des boutons de gauche, ce qui peut être le cas, alors c'est certainement la bonne réponse et devrait être considérée comme la réponse la plus complète.
truedat101

self.navigationItem.hidesBackButton = trueSon fonctionnement comme prévu.
Shahabuddin Vansiwala

9

Cela se trouve également dans la documentation de la classe UINavigationController:

navigationItem.hidesBackButton = true


1

Vous pouvez essayer avec le code ci-dessous

override func viewDidAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

Ce n'est pas une réponse à cette question.
Boris Nikolic

0

Voici une version de la réponse dans

Swift 5

que vous pouvez l'utiliser à partir du storyboard:

// MARK: - Hiding Back Button

extension UINavigationItem {

    /// A Boolean value that determines whether the back button is hidden.
    ///
    /// When set to `true`, the back button is hidden when this navigation item
    /// is the top item. This is true regardless of the value in the
    /// `leftItemsSupplementBackButton` property. When set to `false`, the back button
    /// is shown if it is still present. (It can be replaced by values in either
    /// the `leftBarButtonItem` or `leftBarButtonItems` properties.) The default value is `false`.
    @IBInspectable var hideBackButton: Bool {
        get { hidesBackButton }
        set { hidesBackButton = newValue }
    }
}

Chaque élément de navigation d'un contrôleur de vue aura cette nouvelle propriété dans la section supérieure de l'inspecteur d'attributs


0

Cela a fonctionné pour moi dans Swift 5 comme un charme, ajoutez-le simplement à votre vueDidLoad ()

self.navigationItem.setHidesBackButton(true, animated: true)

-4

entrez la description de l'image ici

Accédez à l'inspecteur d'attributs et décochez la case Afficher la barre de navigation pour masquer le bouton de retour.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.