2014-12-05 35 views
1

我想从一个VC1(它是一个集合视图)发送数据到一个标签栏视图控制器。这是我的prepareForSegue代码。在swift中使用.viewControllers

 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的行上没有名为'subscript'的成员。我相对较新,因此错误对我来说很难。任何人都可以帮我弄清楚我要去哪里错了吗?谢谢!

+0

建议:添加一些条件来检查它是正确的,你正在寻找的继续。 – Jageen 2014-12-05 13:00:23

+0

,你认为这会解决错误? – 2014-12-05 13:01:10

+0

这只是建议我不确定这个问题,但它肯定会避免发生其他问题 – Jageen 2014-12-05 13:02:09

回答

0

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

那为什么编译器不会抱怨呢?因为你重新定义了segue变量传入方法!

你可以简单地通过调用你的标签栏控制器来解决这个问题。

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

尽量争取非常明确和明确的变量名称。

+0

Gotcha ....那么我将如何使用它来传递一个变量? – 2014-12-05 14:33:02

+0

我没有看到您的代码传递变量的任何问题。 – Mundi 2014-12-05 15:24:24

0

我有同样的问题,上面接受的答案不适合我。然而,这样做:

var tabBarController = segue.destinationViewController as UITabBarController 
var playerController = tabBarController.viewControllers?.first as PlayerFromRosterViewController 
相关问题