gpt4 book ai didi

ios - 部分之间多个自定义 TableviewCell 上的多个自定义 UICollectionView

转载 作者:行者123 更新时间:2023-11-30 12:57:38 27 4
gpt4 key购买 nike

多个自定义 TableviewCell 上的多个自定义 UICollectionView

我想要什么:多个 TableviewCell 上的多个自定义 UICollectionView。

这些因部分而异。

我遵循了本教程:https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/

但我不明白为什么会出现问题,

错误显示,

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'could not dequeue a view of kind: UICollectionElementKindCell with identifier ProductCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

我从 cellForRowAt 注册了 Nib 文件,当然,我也在 Nib 文件上添加了标识符。

来自TableView的方法,像这样

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

switch indexPath.section{
case 0:

let cell = tableView.dequeueReusableCell(withIdentifier: product, for: indexPath) as! ProductTableViewCell
cell.collectionView.register(UINib(nibName: "ProductCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "ProductCell")

cell.collectionView.viewWithTag(0)
return cell
case 1:
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! ShowDataTableViewCell
cell.collectionView.register(UINib(nibName: "ShowDataCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CollectionCell")
cell.collectionView.viewWithTag(1)
return cell

default:
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! ShowDataTableViewCell

cell.collectionView.register(UINib(nibName: "ShowDataCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CollectionCell")
cell.collectionView.viewWithTag(99)

return cell
}

}

这不起作用,我还尝试从 TableViewCell 注册 nib 文件,

但它也不起作用。

或者问题是由 numberOfItemsInSection 方法发生的?

extension TableChildFoodViewController : UICollectionViewDelegate, UICollectionViewDataSource{

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
return 10
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{


print("tag: \(collectionView.tag)")


switch collectionView.tag{
case 0:

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProductCell", for: indexPath) as! ProductCollectionViewCell
return cell

case 1:
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCell", for: indexPath) as! ShowDataCollectionViewCell
return cell


default:
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCell", for: indexPath) as! ShowDataCollectionViewCell
return cell
}


}

}

如果可以的话你能给我建议吗?

TableChildFoodViewController.swift

最佳答案

解决了,

我应该使用这个方法

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

不是,cell.collectionView.viewWithTag(0)

我修复了,cell.collectionView.tag = indexPath.section

成功了!

关于ios - 部分之间多个自定义 TableviewCell 上的多个自定义 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40237565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com