2017-07-04 2 views
0

Je veux changer le comportement du bouton de retour et je remplace le bouton Retour de Matériel avec le nouveau bouton de la barre comme ci-dessous:Comment remplacer retour bouton matériel à Swift

let backButton: UIButton = { 
    let btn = UIButton() 
    btn.setImage(UIImage(named: "prev"), for: .normal) 
    btn.frame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2) 

    return btn 
}() 

En fonction viewDidLoad:

override func viewDidLoad() { 
    super.viewDidLoad() 

    backButton.action = { [weak self] in self?.showAlert() } 
    let barButton = UIBarButtonItem(customView: backButton) 
    navigationItem.backButton.isHidden = true 
    navigationItem.leftBarButtonItems = [barButton] 
} 

Mais je ne peux pas cliquer pour nouveau bouton retour parce qu'il a été par UINavigationBarBackIndica mèche TorView.

Comment est-ce que je peux remplacer le bouton arrière avec Matériel. Je veux garder Matériel bibliothèque parce que dans d'autres caractéristiques du projet j'ai besoin Matériel.

Merci d'avance pour votre aide.

+0

votre problème résolu? –

+0

Il a été corrigé: [Matériel] (https://github.com/CosmicMind/Material/commit/7560013c51e6498598caf2084b3942e111fb37f0). J'apprécie vraiment votre aide avec ma question. – javimuu

+0

s'il vous plaît marquer ma réponse comme utile/accepté si vous l'avez trouvé utile –

Répondre

0

Faites ceci dans votre méthode viewDidLoad():

self.navigationItem.backBarButtonItem.hidden = YES 
    let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: self, action: #selector(YourViewController.back(sender:))) 
    self.navigationItem.leftBarButtonItem = newBackButton 
    self.navigationItem.leftBarButtonItem?.image = UIImage(named : "prev") 
    self.navigationItem.leftBarButtonItem?.accessibilityFrame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2) 

définit alors une fonction nommée back dans votre contrôleur de vue, cette fonction exécutera l'action souhaitée pour votre nouveau bouton retour

func back(sender: UIBarButtonItem) { 
     // Perform your custom action 
    } 

Note Pas besoin de définir une variable de bouton séparée

** Si self.navigationItem.backBarButtonItem.hidden = YES ne fonctionne pas, puis le remplacer par self.navigationItem.backBarButtonItem = nil; **

+0

Merci pour votre réponse, mais le dos du matériel ne se cache pas. – javimuu

+0

J'ai édité mon code, s'il vous plaît regarder dans ma solution –

+0

Ou vous essayez ceci: 'navigationItem.hidesBackButton = true', d'abord aller avec mon code affiché, puis faire les changements si nécessaire –