2017-10-18 4 views
1

J'ai un contrôleur de barre d'onglets avec 4 contrôleurs de vue enfant. Chaque fois que l'utilisateur change de barre d'onglets, les éléments de navigation en haut à droite sont supposés changer. Ils changent, sauf pour un scénario (utilisateur allant du troisième onglet).Les éléments de navigation ne sont pas mis à jour après que l'utilisateur a changé d'élément de barre d'onglet

enter image description here

Je dois admettre que je change les éléments de navigation de la barre de navigation du contrôleur de barre d'onglets. Je n'utilise pas quatre contrôleurs de navigation différents + view controllers.

// called in viewWillAppear 
internal func setupNavigationBar() { 
    title = "Meeting" 

    if let tabBarVC = parent as? ProjectTabBarController { 
     tabBarVC.navigationItem.leftBarButtonItems = nil 
     tabBarVC.navigationItem.rightBarButtonItems = nil 

     tabBarVC.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(didTapCreateMeeting)) 
    } 
} 

Répondre

2

Utilisez ce code pour cacher la barButtonItems place:

self.navigationItem.setLeftBarButton(nil, animated: true) 
self.navigationItem.setRightBarButton(nil, animated: true) 

puis re-set et faire tout ce faire vous souhaitez établir et assurez-vous de mettre ces derniers dans votre viewDidAppear pour vous assurer que votre la vue est mise à jour

+0

Il ne semble pas y avoir de modification. J'ai mis ce code dans ma vue super classe de contrôleur (méthode viewWillAppear). J'ai également essayé avec 'self.tabBarController.navigationItem' – Cesare

+0

Utilisez votre' viewDidAppear' à la place pour vous assurer que votre vue est mise à jour @Cesare –

+0

Si vous pouvez mettre à jour votre réponse avec votre dernier commentaire je peux l'accepter @Rashwan – Cesare