Ios 在Swift中将数据从tableview传递到选项卡栏视图控制器。

Ios 在Swift中将数据从tableview传递到选项卡栏视图控制器。,ios,uitableview,swift,uitabbarcontroller,Ios,Uitableview,Swift,Uitabbarcontroller,在我的故事板中,我有一个部分,其中带有表视图的视图控制器放置在选项卡栏控制器之前。此选项卡栏有两个视图控制器。早些时候,我已经使用了表视图,当我单击一个单元格时,我将其传递给另一个Viewcontroller,后者使用表和单元格加载另一个视图控制器,单元格的id来自第一个表中的推式单元格。像这样: tableview控制器,准备开始: if segue.identifier == "overviewSegue" { var caseViewController

在我的故事板中,我有一个部分,其中带有表视图的视图控制器放置在选项卡栏控制器之前。此选项卡栏有两个视图控制器。早些时候,我已经使用了表视图,当我单击一个单元格时,我将其传递给另一个Viewcontroller,后者使用表和单元格加载另一个视图控制器,单元格的id来自第一个表中的推式单元格。像这样:

tableview控制器,准备开始:

        if segue.identifier == "overviewSegue" {
          var caseViewController: CaseViewController = segue.destinationViewController as CaseViewController
          var caseIndex = overviewTableView!.indexPathForSelectedRow()!.row
          var selectedCase = self.cases[caseIndex]
        caseViewController.caseitem = selectedCase
    }
这很有效。现在我想做同样的事情,但唯一的区别是最后一个视图控制器是tabbar控制器的一部分。问题是我无法将数据传递给最后一个表视图控制器


我尝试了几种方法,但无法将数据指向tabbar表视图。Segue不可接近,目标不是表视图控制器,而是tabbar控制器等。问题是,如何通过tabbar控制器将数据从一个表视图传递到另一个视图控制器

我找到了一个解决方案:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
      if segue.identifier == "toTabController" {
        var tabBarC : UITabBarController = segue.destinationViewController as UITabBarController
        var desView: CaseViewController = tabBarC.viewControllers?.first as CaseViewController

        var caseIndex = overviewTableView!.indexPathForSelectedRow()!.row
        var selectedCase = self.cases[caseIndex]

        desView.caseitem = selectedCase
      }
    }

简单解释:您需要进入选项卡栏控制器并选择他的视图控制器。它通常有两个,因此您可以选择第一个。之后,定义它所属的类,您就可以像以前一样传递数据了

对于尝试使用此建议的人员,将数据传输到第一个选项卡是可行的,但您需要一个模型来将数据传输到第二个选项卡。