2017-07-27 25 views
0

我已經創建了一個視圖控制器,其中嵌入了一個表視圖,並且在表的每個部分中我有一個包含水平集合視圖的單元。 This is what it looks like.集合視圖委託被連接到表視圖單元格,表視圖委託連接到主視圖控制器。如何傳遞數據並將新的視圖控制器從嵌入視圖控制器中的表視圖中的集合視圖中推送出來?

我想使用導航控制器的push方法將單元格切換到新的視圖控制器,並將數據從集合視圖單元傳遞到新的視圖控制器。但是,我無法從集合視圖的didSelectItem函數內部調用該導航控制器的push方法,因爲它嵌套在我的表視圖單元格中,而不是實際的視圖控制器。一些幫助將不勝感激,謝謝!

這是主視圖控制器的cellForItem功能

class SearchController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "ExploreRow", for: indexPath) as! ExploreRow 

    let category = classTypes[indexPath.section] 
    cell.configureCell(type: category) 

    return cell 
} 

}

,這是收集視圖細胞

class ExploreRow: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { 

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    print("Selected \(indexPath.row)") 
} 

}

表視圖細胞的didSelectItem內的代碼

打印功能工作正常,但我不能調用導航ation控制器從該表視圖內推新視圖控制器。

+0

處理它您應該發佈代碼以便於幫助您。 –

+0

你所描述的應該工作得很好。是否有錯誤?只要你在ViewController類或擴展中,它應該沒問題。 – Dopapp

回答

0

從您的表視圖單元實現代表協議或回調閉包到表視圖控制器。然後,你必須:

  • CollectionViewCell挖掘
  • TableViewCell是的CollectionView的委託 - 它處理的自來水
  • 在didSelectItem,TableViewCell告訴TableViewController這CollectionViewCell被竊聽
  • TableViewController從那裏
+0

這是我正在尋找的答案,非常感謝! –

相關問題