2017-07-27 68 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

这是我正在寻找的答案,非常感谢! –

相关问题