0

J'essaie d'accomplir ce que je pense serait une tâche simple, mais en dépit des messages similaires sur ici étant répondu, la solution me échappe ....Xcode 8, en ajoutant UIButtons à NavigationBar pour les contrôleurs de vue non initiaux

J'utilise Main.storyboard dans Xcode 8/swift 3 pour créer une application avec le ViewController initial étant un UINavigationController. Je veux ensuite pousser à UITabBarController qui a deux contrôleurs de vue dont elle détient une relation avec:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    if let vc = mainStoryboard.instantiateViewController(withIdentifier: "test") as? UITabBarController { 
     self.navigationController?.pushViewController(vc, animated: true) 
    } 
} 

Lors du lancement de l'application, la ViewController initiale « pousse » avec succès au TabBarController/il est ViewControllers (image ci-dessous). Le problème que j'ai est après avoir ajouté des éléments de navigation/boutons dans les ViewControllers TabBarController (soit dans Storyboard ou par programmation) les éléments de boutons/nav ne montrent jamais.

Storyboard setup

Simulator screenshot

Je l'ai vu quelques messages tels que les liens ci-dessous et ont suivi les étapes proposées textuellement, mais rien n'a résolu le problème. Toute aide serait grandement appréciée!

Adding buttons to navigation controllers How to add buttons to navigation controller visible after segueing?

Répondre

1

Il est ne montre pas, parce que votre TabBarController a aussi sa propre UINavigationBar. ViewControllers sont à l'intérieur TabBarController

vous pouvez créer TabBarController personnalisé et gérer les actions onglets Essayez ce code:

class TabBarController: UITabBarController { 
    override var selectedViewController: UIViewController? { 
    didSet { 
     switch self.selectedViewController { 
     case self.selectedViewController is FirstViewController: 
     self.navigationItem.rightBarButtonItem = self.firstButton 
     case self.selectedViewController is SecondViewControlller: 
     self.navigationItem.rightBarButtonItem = self.secondButton 
     default: 
     break 
     } 
    } 
    } 
} 
+0

got it - merci. Des recommandations sur comment les faire montrer? – lhammer

+0

@ihammer mis à jour ma réponse –

+0

légende absolue, qui a fait le tour parfaitement! Merci beaucoup. – lhammer