Swift标签栏视图prepareforsegue

时间:2014-12-05 02:42:56

标签: ios swift uitabbarcontroller

在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)时,我printInn()selectedIndexPassing以查看返回的内容。它正确返回。然后,在VC2中,我将此prepareforsegue称为实际视图控制器,或标签栏中的第一个按钮:

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

然而,当我在VC3(PlayerFromRosterViewController)中println()selectedIndexPassingForDisplay时,我得到了nil。为什么变量没有从Tab Bar导航控制器传递到VC3,AKA是第一个标签栏按钮视图。

1 个答案:

答案 0 :(得分:22)

您是否检查过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"