Swift标签栏视图prepareforsegue

在VC1(集合视图)这是我的prepareforsegue代码:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { let segue = segue.destinationViewController as TabBarViewController var selectedIndex = self.collectionView.indexPathForCell(sender as UICollectionViewCell) segue.selectedIndexPassing = selectedIndex?.row } 

当我到达VC2(这是TabBarViewController),我println()selectedIndexPassing看看返回。 它会正确返回。 然后,在VC2中,我把这个prepareforsegue叫做实际的视图控制器,或者是标签栏中的第一个button:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var segue = segue.destinationViewController as PlayerFromRosterViewController segue.selectedIndexPassingForDisplay = 1 } 

但是,当我println()在VC3(PlayerFromRosterViewController)selectedIndexPassingForDisplay我得到零。 为什么不是从标签栏导航控制器传递给VC3的variables,也就是第一个标签栏button视图。

你有没有检查你的TabBarController中的prepareForSegue是否被调用?

它永远不会被调用,因为UITabBarController和它的子视图控制器之间的连接不是一个故事板segue。 你应该从UITabBarController通过访问你想要的索引来访问它的viewControllers集合,直接得到viewController的引用。

 var tabBarController = segue.destination as UITabBarController var destinationViewController = tabBarController.viewControllers[0] as YourViewController // or whatever tab index you're trying to access destination.property = "some value"