在swift中使用.viewControllers

时间:2014-12-05 12:53:21

标签: ios swift uitabbarcontroller

我正在尝试将数据从一个VC1(它是一个集合视图)发送到标签栏视图控制器。这是我的prepareForSegue代码。

        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {



    var segue = segue.destinationViewController as UITabBarController

    var whereToGo = segue.viewControllers[0] as PlayerFromRosterViewController

    var selectedIndex = self.collectionView.indexPathForCell(sender as UICollectionViewCell)

    whereToGo.selectedIndexPassingForDisplay = selectedIndex?.row



}

但是,我收到的错误是"' [AnyObject]?'没有名为'下标'"在我宣布whereToGo的行上。我对快速相对较新,所以错误对我来说很难。任何人都可以帮我弄清楚我哪里出错了吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我认为你混淆标签栏控制器和segue。选项卡栏控制器具有属性viewControllers,其中包含与各种选项卡栏项关联的视图控制器。 segue(UIStoryboardSegue)没有此属性。

那为什么编译器不抱怨?因为重新定义传递给方法的segue变量!

您可以通过调用标签栏控制器来解决此问题。

var tabBarController = segue.destinationViewController as UITabBarController
var playerController = tabBarController.viewControllers.firstObject 
   as PlayerFromRosterViewController 

尝试争取非常清晰明确的变量名称。

答案 1 :(得分:0)

我遇到了同样的问题,上面接受的答案对我不起作用。但这确实如此:

var tabBarController = segue.destinationViewController as UITabBarController
var playerController = tabBarController.viewControllers?.first as PlayerFromRosterViewController