2014-12-04 47 views
3

在我的故事板中,我有一个视图控制器与表格视图放置在选项卡栏控制器之前的部分。这个标签栏有两个视图控制器。早些时候,我已经使用了表格视图,当我点击一个单元格时,我将其传递给另一个ViewController,它将另一个视图控制器与表格和单元格从第一个表格的推送单元格中加载到单元格中。就像这样:将数据从tableview传递到Swift中的标签栏视图控制器。

的实现代码如下控制器,用于赛格瑞准备:

 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控制器将数据从tableview传递到另一个视图控制器。

回答

6

我已经找到了解决办法:

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 
     } 
    } 

简单的解释:你需要让你的标签栏控制器,并挑选他的视图控制器。它通常有两个,所以你可以选择第一个。之后,定义它属于哪个类,并且可以像以前那样传递数据。

+1

对于那些试图使用此建议的人来说,它会将数据传输到第一个选项卡,但您需要一个模型将数据传输到第二个选项卡。 – jessi 2017-06-14 08:57:19

相关问题