将数据发送到嵌入在UISplitViewController内的容器内的Tableview Embedded

时间:2016-01-20 12:34:28

标签: ios swift uitableview

我有UISplitViewController,其中包含以下设置:

MasterTableViewController - > UINavigationController -> CustomViewController -> Container -> CustomTableViewController

我可以通过这样的segue将数据从MasterTableViewController发送到CustomViewController

if segue.identifier == "showCustomView" {
            if let indexPath = self.tableView.indexPathForSelectedRow {
                let section = self.survey[indexPath.row]
                let controller = (segue.destinationViewController as! UINavigationController).topViewController as! CustomViewController

                controller.detailItem = section

                if let work = workItem{
                controller.workItem = work
                }

            }
        }

我不知道如何将相同的数据发送到CustomTableViewController,可以从MasterViewController完成,还是首先获取数据,然后通过我的数据发送CustomViewController

此处的最终目标是NSManagedObjectCustomTableViewController

2 个答案:

答案 0 :(得分:0)

您的CustomViewController负责将该数据转发到其视图,从而转发给容器中嵌入视图的ViewControllers。为此,您可能需要向CustomViewController添加新的“setter”,并在代码片段中添加CustomViewController而不是UINavigationController并传递该值。然后,此setter应将数据转发到子视图控制器和/或在viewDidLoad内传递它。请注意,在使用故事板时,无法完全控制是先调用setter还是先调用viewDidLoad。因此,在两种方法中进行适当的nil检查并实现设置子视图控制器的属性。

答案 1 :(得分:0)

我通过使用我在故事板中设置的嵌入segue标识符来完成工作,该标识符链接了containerCustomTableViewController

这是CustomViewController

上的代码
override func prepareForSegue(segue: UIStoryboardSegue,
        sender: AnyObject?) {

           if segue.identifier == "embedSegueIdentifier"{
                if let vc = segue.destinationViewController as? CustomTableViewController
                     {

                        self.embeddedViewController = vc
                        self.embeddedViewController.workItem = work

                }


            }
}