2017-07-18 1 views
1

Salut tout Je veux passer du premier tabbarcontroller au second tabbarcontroller mais je ne peux pas le faire. Contrôleurs Voir dans mon TabBar sont également intégrés avec NavigationControllers, et donc quand je tente de Buttées il me donne une erreur disant::Passer d'une barre d'onglets à l'autre en cliquant sur (Barre d'onglets avec contrôleurs de navigation)

Impossible jeter la valeur de type « UINavigationController » (0x1048d5898) à « abc.CategoriesController '(0x101088d88).

Code I revisées:

let barViewControllers = self.tabBarController?.viewController 
let svc = barViewControllers![1] as! myController 
svc.myOrder = self.myOrder 

J'ai essayé beaucoup de solutions, mais n'a pas réussi à enchaîner quelqu'un peut me aider? S'il vous plaît expliquez-moi le concept derrière cela si quelqu'un peut?

self.tabBarController.selectedIndex = 1 fonctionne mais je ne peux pas transmettre de données avec cette méthode.

Comme Maddy me dit::

Utilisez let barViewControllers = self.tabBarController?.viewController[1] as? myController pour transmettre des données.

Mais c'est la ligne qui me donne au-dessus de l'accident

+0

erreur suggérez sur la position [1] de ce tabbatcontroller vous obtiennent est UINavigationController vous devez trouver toute la pile de ce contrôleur de navigation –

+0

ne pas jette votre [1] à myController le cast à UINavigationController et après ce que svc.viewControllers donne à tous vos stack viewController du controleur de navigation –

Répondre

3

L'erreur que vous avez penser que ce que vous obtenir à partir du code ci-dessous n'est pas le viewController si vous

let barViewControllers = self.tabBarController?.viewController //some what wrong with this 

meilleure façon d'accéder à l'ensemble vue contrôleur est comme ci-dessous

var svc = self.tabBarController.viewControllers 

et si vous voulez accéder viewControllers par index d'entre eux, puis en dessous d'un

var svc = self.tabBarController.viewControllers[1] as yourVC 

et dernier, mais pas dans la liste si vous voulez accéder contrôleur de navigation de la barre d'onglets

var svc = self.tabBarController.viewControllers[1] as UINavigationController 

Hope this vous aider :)

+0

qui ne donne pas de crash mais pas même switchi ng onglets et de plus avec cette dernière étape comment vais-je envoyer des données à un contrôleur spécifique. –

+0

vous pouvez passer les données en utilisant var svc = self.tabBarController.viewControllers [1] comme votreVC et pour changer l'onglet, vous pouvez aller avec self.tabBarController.selectedIndex et assurez-vous que tout ce que vous chassant avec le viewWillappear de votre onglet de destination –

+0

mis à jour répondre. –