2014-12-05 55 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