我有一个带有单元格的collectionView,然后在这个单元格中又有一个collectionView。这个子 collectionView 再次在其中包含一个单元格。现在我想从父 collectionView 与我的子 collectionView 中的单元格进行通信。如何在 Storyboard 的 swift 3 中做到这一点?如附图所示,我想从第一个 collectionView 与 radio 单元进行通信
Best Answer-推荐答案 strong>
- 在你的主 ViewController.swift 中符合 UICollectionViewDataSource、UICollectionViewDelegate 协议(protocol)。
- 现在从你的 Storyboard中取出你的父 CollectionView 到你的 ViewController.swift。
- 然后为您的 UICollectionview 自定义单元格创建一个 Cocoa Touch 类,它是 UICollectionViewCell 的子类,并在此类中获取您的子 CollectionView 的导出。
- 现在转到您的 Storyboard并选择您的父 Collectionview 单元格并将其类设置为您的自定义单元格类,然后在属性检查器中为该单元格设置一个标识符。
- 现在再次为您的子 UICollectionview 单元格创建类,并执行与父 UICollectionview 相同的操作。
- 现在您的 Storyboard中的所有内容都已设置完毕。在此之后,您应该在 UICollectionView 的委托(delegate)方法中为您的过程编写代码。
现在在你的 ViewController.swift 文件中编写 UICollectionView 的委托(delegate)方法。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
让细胞=
parentCollectionViewOutlt.dequeueReusableCell(withReuseIdentifier: "parentcell", for: indexPath) as! ParentCollectionViewCell
cell.childCollectionView.reloadData()
返回单元格
}
现在在你的父 CollectionView 单元类文件中:
还要使其符合 UICollectionViewDataSource、UICollectionViewDelegate 协议(protocol)并为 UICollectionView 编写所有委托(delegate)方法,然后编写以下代码:
覆盖 func awakeFromNib() {
super.awakeFromNib()
childCollectionView.delegate = self
childCollectionView.dataSource = self
childCollectionView.reloadData()
}
现在在 cellForItemAt() 方法中,通过指定其标识符来获取您的子 CollectionView 的单元格,然后在其中执行您的代码并返回您的单元格。在这里,您可以在子 CollectionView 的单元格中执行任何您想做的事情,这意味着您可以访问此类中子 CollectionView 的单元格,以获取父 CollectionView 的自定义单元格。
关于ios - Storyboard中的嵌套 CollectionView,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/42555022/
|