2016-09-14 1 views
0

J'ai un problème avec le bouton pour afficher un bouton sur un contrôleur de navigation. J'ai étudié cela et je pense que cela a à voir avec le fonctionnement de la navigation. Poussé et Popped d'une pile.Comment puis-je connaître le contrôleur de navigation qui fait partie du viewController actuel?

Voici ce que j'ai:

J'ai la vue initiale en tant que contrôleur de navigation. Ce contrôleur appelle plusieurs vues mais la vue avec laquelle je rencontre un problème est un UICollectionViewController. Ceci est appelé à partir d'un clic sur le premier viewController connecté à la navigationController. J'ai alors une configuration de segue qui va de UICollectionViewCell à un nouveau ViewController. Donc je suppose qu'il s'agit d'un second niveau de NavigationController.

Deuxièmement, j'ai une image de bouton de retour qui est affichée sur ma navigation au lieu du texte < Retour.

Le bouton de retour s'affiche correctement dans le contrôleur de navigation sur toutes les vues, à l'exception de celle appelée depuis le second niveau. Comme je l'ai compris à la lecture d'autres articles sur ce sujet, c'est parce qu'un nouveau contrôleur de navigation est créé sur le second niveau. Ça me va, parce que tout fonctionne bien, mais j'ai besoin que le bouton apparaisse sur ce deuxième navcontroller.

J'essayais d'ajouter par programme le bouton au contrôleur de navigation associé à la vue actuelle. J'utilise ce code:

override func viewDidLoad() { 
    super.viewDidLoad() 
    var image = UIImage(named: "NavLogo") 
    var back_image = UIImage(named: "BackButton") 
    image = image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 
    back_image = back_image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal) 


    self.navigationController?.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 

    self.navigationController?.navigationItem.leftBarButtonItem = UIBarButtonItem(image: back_image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 
} 

Ce code ne semble pas ajouter le bouton au contrôleur de navigation actuel.

Ce projet utilise Swift 3 et Xcode 8

Répondre

2

Utilisez

self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 

au lieu de

self.navigationController?.navigationItem.rightBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.plain, target: nil, action: nil) 

La raison de cela est expliqué dans ce link.

+0

J'ai essayé sans cela d'abord mais ni travaillé. Ce qui est drôle, c'est que rightBarButtonItem est en train de montrer. –

+0

Kerry, Vous avez la bonne réponse, alors si un autre bonehead comme moi n'ignore pas cela, j'ai mal orthographié le nom de l'image. Merci pour l'aide. –