假设我有一个Cheddar
,它的数据叫做ParentCollectionViewController
。
此数据也可以在assetID
中使用。
如何在每个ParentCollectionViewControllerCell
中的ChildCollectionView
中传递此数据。
谢谢!
答案 0 :(得分:1)
首先,如果要首先发送数据,则需要在ParentCollectionViewControllerCell中注册子collectionviewcell。您将在awakeFromNib()中完成此操作。
override func awakeFromNib() {
childCollectionView.register(UINib.init(nibName: "childCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "childCollectionViewCell")
childCollectionView.reloadData()
}
因此,这意味着您在ParentCollectionViewControllerCell中具有子collectionview的所有委托和数据源。因此,您将通过cellForItemAtindexPath发送数据:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "childCollectionViewCell", for: indexPath) as! childCollectionViewCell
cell.bindAssetid(strAssetId: assetID!)
return cell
}
我认为这个答案解决了您的要求。
快乐编码
答案 1 :(得分:0)
首先,您需要检测所选的UICollectionView
,然后必须从该单元格中获取数据,并对其进行任何处理,您只需在didSelectRowAt
函数中进行检查,然后执行举例来说,无论您使用什么数据进行操作,您都想从子单元格中获取名为foo
的内容并将其显示在Parent
单元格中,那么您的代码应该是这样的
var myFooData: String?
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if collectionView == parentCollectionView { // if the selected cell from the parent collection view do something
} else {
//if the selected cell from the sub collection view do something
myFooData = (collectionView.cellForItem(at: indexPath) as! MyCusomCell).MyFooData
}
}
答案 2 :(得分:0)
我找到了一个更简单的选择。
在ChildCollectionView文件中声明一个函数setData()。
func setData(dataString: String){
print(dataString, "data you wanted to pass")
}
将ChildCollectionView的情节提要从情节提要插入ParentCollectionViewCell
使用出口在ParentCollectionViewCell中调用setData(data)函数,并将数据传递到其中。像这样:
var dataString: String! {
didSet {
childCollectionViewOutlet.setData(dataString: dataString)
}
}
瞧!现在,您可以在所需的ChildCollectionView中获得数据。希望这对某人有帮助