在导航控制器和标签控制器之间传递数据

时间:2015-01-20 04:58:07

标签: ios xcode swift uinavigationcontroller uitabview

如果故事板包含导航控制器中的一个视图,该视图将分段到已经嵌入在选项卡控制器中的另一个视图控制器,那么如何将变量从初始视图传递到选项卡控制器中的第一个视图?

具体来说,我希望使用基本performSegueWithIdentifier方法传递变量。通过将第一个视图控制器(嵌入在导航控制器中)连接到选项卡控制器,我无法传递数据。但是,如果直接在第一个视图控制器和目标视图控制器之间建立连接,则目标不再嵌入选项卡中。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "internalItemDetail" {
        let destination = segue.destinationViewController as InternalInventoryDetail
        let index = itemTable.indexPathForSelectedRow()!
        destination.fmRecordId = sectionedItemArray[index.section][index.row]["fmRecordId"] as String!
    }
}

要明确的是,目标是将一个变量从导航控制器传递到另一个嵌入选项卡控制器的视图,而UI将在导航控制器中显示一个选项卡控制器。

1 个答案:

答案 0 :(得分:0)

UIStoryBoardSegue有一个destinationViewController属性,可以为你提供目标视图控制器 - 在你的情况下是一个UITabBarController(如果我正确地读你的问题)。你必须将它转换为UITabBarController,然后你可以从那里访问它的子视图。 (目标c中的代码,但应该很容易转换,我从来没有使用过swift)

UITabBarController *tabControl = (UITabBarController *)segue.destinationViewController;
MyViewController *mv = (MyViewController *)tabControl.viewControllers[0];// whatever index you want