web-dev-qa-db-fra.com

Masquer le bouton Précédent dans la barre de navigation avec peauxBackButton dans Swift

Je souhaite masquer le bouton Précédent lors du passage d'une vue à une autre. J'ai lu les questions concernant ce problème et chaque réponse était "use hidesBackButton". Le problème avec ceci est:

  • quand je le mets dans viewDidLoad/viewWillAppear, la flèche du bouton Précédent se cache, mais la chaîne "Back" ne le fait pas.

  • quand je le mets dans viewDidAppear le bouton de retour disparaît mais visible par l'utilisateur

Comment puis-je réparer cela? 

Modifier:  

Voici comment vous pouvez répliquer ce problème (ou bug?)
Créer une nouvelle application à onglets avec Swift dans Xcode. Dans FirstViewController.Swift, utilisez performSegueWithIdentifier pour accéder au second contrôleur de vue. Dans SecondViewController.Swift, masquez le bouton Précédent de la barre de navigation à l’aide de masquerBackButton et vous verrez quel est le problème.

26
Amer Hukic

Essayez d'ajouter ceci:

let backButton = UIBarButtonItem(title: "", style: .Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
40
ericgu

Pour masquer le bouton de retour avec le dernier Swift:

self.navigationItem.setHidesBackButton(true, animated: false)
47
ObjectiveTC

Vous pouvez utiliser le code ci-dessous pour masquer le bouton Précédent sur UINavigationBar.

Swift 3 ;

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationItem.hidesBackButton = true
}
16
Celil Bozkurt

cela a fonctionné pour moi

navigationController?.navigationBar.topItem?.hidesBackButton = true
8
luhuiya

Essayez d'ajouter ceci, cela a fonctionné pour moi

navigationItem.hidesBackButton = true
6
Ha cong Thuan
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    self.navigationController?.navigationBarHidden = false
    var button: UIButton = UIButton()
    button.setImage(UIImage(named: "person-icon.jpg"), forState: .Normal)
    button.frame = CGRectMake(0, 0, 25, 25)
    button.targetForAction("actioncall", withSender: nil)
    var rightItem:UIBarButtonItem = UIBarButtonItem()
    rightItem.customView = button
    self.navigationItem.rightBarButtonItem = rightItem

    let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
    navigationItem.leftBarButtonItem = backButton
}

override func viewWillAppear(animated: Bool) {
    let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
    navigationItem.leftBarButtonItem = backButton
}
6
A.G

Cela a fonctionné pour moi:

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    self.tabBarController?.navigationItem.hidesBackButton = true
}
1
Bruno Cunha

Travaillé pour moi quand je l'ai mis dans init (), au lieu de viewDidLoad. Étrange cependant

1
Joe M