单击时从一个标签栏移动到另一个标签栏(带有导航控制器的标签栏)

时间:2017-07-18 15:45:42

标签: ios swift3 uinavigationcontroller uitabbarcontroller

大家好我想从第一个tabbarcontroller到第二个tabbarcontroller但不能这样做。我的TabBar中的视图控制器也嵌入了NavigationControllers,所以当我尝试切换标签时,它给出了错误说 - :

  

无法将类型'UINavigationController'(0x1048d5898)的值转换为   'abc.CategoriesController'(0x101088d88)。

我使用的代码 - :

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

我尝试了很多解决方案,但是没有人能帮助我吗?如果有人可以,请解释一下这背后的概念吗?

self.tabBarController.selectedIndex = 1确实有效但我无法使用此方法传递数据。

正如 Maddy 所说 - :

使用let barViewControllers = self.tabBarController?.viewController[1] as? myController传递数据。

但这就是让我崩溃的路线

1 个答案:

答案 0 :(得分:3)

你得到的错误表明你从下面的代码得到的东西不是viewController,如果你

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

访问所有视图控制器的最佳方法如下

var svc = self.tabBarController.viewControllers

如果你想通过它们的索引来访问viewControllers,那么就在一个

之下
var svc = self.tabBarController.viewControllers[1] as yourVC
如果要从标签栏访问导航控制器,请

并在列表中输入

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

希望这可以帮助你:)