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"