将数据从Tableview传递到tabbar控制器的子节点

时间:2015-03-30 22:58:12

标签: ios uitableview swift uitabbarcontroller

我有一个Tableview显示来自核心数据库的数据。 选择行时,我将信息传递给func prepareForSugue中的视图控制器(vc)。

问题是vc我将此信息传递给Tab Bar控制器的子节点,并通过直接向vc设置segu绕过此Tab Bar控制器,这反过来导致没有标签栏VC。

我的问题是,无论如何都要将数据从tableview传递给标签栏控制器的第一个子节点,并确保标签栏层次结构得到维护?

任何意见都赞赏。

Tableview为segue做准备:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


        // Get the new view controller using [segue destinationViewController].
        // Pass the selected object to the new view controller.

        if(segue.identifier == "ItemDetailsSegue"){

            //initilise new vc and cast as history view controller
            var viewcontroller = segue.destinationViewController as History;

            // pass the caseNumber we got from didselectRow to History property / instance var

            println("Passing case Number to Hisory: \(caseNumberToPAsstoHistory)");

            viewcontroller.caseNumberSelected = caseNumberToPAsstoHistory;
        }
    }

1 个答案:

答案 0 :(得分:1)

在luk2302建议之后,我从其视图控制器数组中实例化了tabBar控制器第一个子节点并传递了数据:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


        if(segue.identifier == "ItemDetailsSegue"){


            var tabBarCOntroller : UITabBarController = segue.destinationViewController as UITabBarController;

            var destinationViewController_History : History = tabBarCOntroller.viewControllers?.first as History;

// Set the case number selected property of History vc
            destinationViewController_History.caseNumberSelected = caseNumberToPAsstoHistory;



            println("Passing case Number to Hisory: \(caseNumberToPAsstoHistory)");


        }
    }

感谢您的建议:)