2014-12-04 43 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

相關問題