2017-05-12 1 views
-1

J'ai un MainTabBarController avec plusieurs contrôleurs. Dans mon FirstTabViewController (incorporé dans UINavigationController) j'ai poussé à un autre contrôleur de vue, comme: navigationController?.pushViewController(secondViewController, animated: true).Dismiss View Controller de Modal

Dans ce contrôleur, j'ai montrer un contrôleur de vue modal, comme:

let vc = self.storyboard!.instantiateViewController(withIdentifier: "SomeViewController") as! SomeViewController 

vc.modalPresentationStyle = .overFullScreen 
vc.modalTransitionStyle = .coverVertical 

let nav = UINavigationController(rootViewController: vc) 
self.present(nav, animated: true, completion: nil) 

Et dans le SomeViewController, j'ai de rejeter ce contrôleur comme: self.dismiss(animated: true) mais il apparaîtra automatiquement au contrôleur de vue racine (FirstTabViewController).

Ma question, pourquoi?

Merci.

Répondre

2

Présentez SomeViewController sur votre contrôleur actuel et non sur le navigationController.

donc Changé ligne:

self.navigationController?.present(nav, animated: true, completion: nil) 

Pour:

self.present(nav, animated: true, completion: nil) 
+0

Merci. Je l'ai essayé mais ça ne marche pas pour moi:/ – Idnext

+0

@Idnext Quand vous présentez comme ceci, que s'est-il passé lorsque vous avez rejeté le 'SomeViewController'? –

+0

Le 'FirstTabViewController' apparaît ... comme un effet popToRoot – Idnext

0

_ = NavigationController .popViewController (animé: true)

dismiss(animated: true, completion: nil)