2017-07-18 1 views
0

J'ai deux UIViewController (je n'ai pas utilisé UINavigationController) qui sont nommés ParentViewController et ChildViewController.Définir la cible UIBarButtonItem par programme à la vue précédente Contrôleur

Cependant, je ne peux pas ajouter UINavigationBar en utilisant le storyboard pour le contrôleur de vue enfant, donc j'ajoute le UINavigationBar avec UIBarButtonItem à l'intérieur de celui-ci par programmation.

J'ai réussi à ajouter la barre de navigation et l'élément de bouton de barre au contrôleur de vue enfant. Le problème est que je ne peux pas définir la cible pour le UIBarButtonItem, donc quand il est pressé, le contrôleur de la vue Parent apparaîtra.

C'est le code que je l'utilise, mais je ne sais pas où les mettre

let navigationBar : UINavigationBar = { //Label to display the text 
    let navBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: 100, height: 50)) 
    navBar.translatesAutoresizingMaskIntoConstraints = false 

    let navItem = UINavigationItem(title: "SomeTitle"); 
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: nil, action: "selector"); 
    let backItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: self, action: #selector(backAction(_:))); 
    //let backItem: UIBarButtonItem = backsItem 

    navItem.rightBarButtonItem = doneItem; 
    navItem.leftBarButtonItem = backItem; 
    navBar.setItems([navItem], animated: false); 

    return navBar; 
}(); 

@IBAction func backAction(_ sender: Any?) { 
    self.navigationController?.popViewController(animated: true) 
} 

Et puis-je ajouter le navigationBar à la sous-vue dans le contrôleur Enfants viewDidLoad()

Pour votre informations, je n'ai rien fait dans le contrôleur de vue parent. C'est juste la séquence que j'ai créée sur le storyboard pour montrer le contrôleur de vue enfant lorsqu'il est pressé.

s'il vous plaît bien vouloir me aider ...

Répondre

0

je l'ai déjà trouvé la solution. Au lieu d'utiliser self.navigationController pour afficher le contrôleur précédent, j'ai utilisé la commande general present pour afficher le contrôleur de vue.

Ceci est mon code, et il a résolu tous mes problèmes.

let vc = self.storyboard?.instantiateViewController(withIdentifier: "ParentViewController") 
self.present(vc!, animated:true, completion:nil) 

J'espère que cela aidera les autres qui font face à un problème comme moi.