2016-05-10 1 views
2

J'essaie d'utiliser une image personnalisée pour mon bouton de retour dans la barre de navigation. J'utilise le code ci-dessous, qui ajoute l'image, mais conserve également le texte "Retour" dans le bouton. Je veux également supprimer le texte. Puis-je faire cela?Bouton retour rapide personnalisé dans la barre de navigation

self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "icon-back") 
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "icon-back") 
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil) 

Répondre

5

code ci-dessous :-) Essayez

func SetBackBarButtonCustom() 
{ 
    //Back buttion 
    let btnLeftMenu: UIButton = UIButton() 
    btnLeftMenu.setImage(UIImage(named: "back_arrow"), for: UIControlState()) 
    btnLeftMenu.addTarget(self, action: #selector(UIViewController.onClcikBack), for: UIControlEvents.touchUpInside) 
    btnLeftMenu.frame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2) 
    let barButton = UIBarButtonItem(customView: btnLeftMenu) 
    self.navigationItem.leftBarButtonItem = barButton 
} 

func onClcikBack() 
{ 
    _ = self.navigationController?.popViewController(animated: true) 
} 
+0

Pourriez-vous s'il vous plaît convertir ce code dans Swift 3 –

+1

@AlekseyTimoshchenko s'il vous plaît vérifier que j'ai mise à jour Ans pour swift 3. –

+0

Merci c'est le travail, mais comment définir le texte à côté de l'image? J'ai essayé '.setTitle (" Annuler ", pour: .normal)' mais il ne fonctionne pas ... J'ai essayé d'augmenter le cadre du bouton, mais aussi sans succès ... Qu'est-ce que je fais mal? –

1

Si vous souhaitez ajouter le bouton Retour dans chaque UIViewController vous pouvez ajouter le code dans l'extension UIViewController que vous pouvez utiliser addBackButton() directement comme suit.

extension UIViewController { 

    func addBackButton() { 
     let btnLeftMenu: UIButton = UIButton() 
     let image = UIImage(named: "backButtonImage"); 
     btnLeftMenu.setImage(image, for: .normal) 
     btnLeftMenu.setTitle("Back".localized, for: .normal); 
     btnLeftMenu.sizeToFit() 
     btnLeftMenu.addTarget(self, action: #selector (backButtonClick(sender:)), for: .touchUpInside) 
     let barButton = UIBarButtonItem(customView: btnLeftMenu) 
     self.navigationItem.leftBarButtonItem = barButton 
    } 

    func backButtonClick(sender : UIButton) { 
     self.navigationController?.popViewController(animated: true); 
    } 
} 

Assurez-vous d'ajouter le fichier "backButtonImage.png" dans votre ensemble d'applications.

Appelez cette méthode self.addBackButton() dans votre méthode de viewDidLoad de votre cette

classe UIViewController personnalisé comme
override func viewDidLoad() { 
     super.viewDidLoad() 
     self.addBackButton() 
} 

Remarque: si vous n'ajoutez pas addBackButton Méthode en extension, vous devrez ajouter cette méthode directement dans la classe et définir la cible et le sélecteur en conséquence.