gpt4 book ai didi

ios - 如何将数据传递到嵌入在TableViewCell中的UICollectionView(xCode-iOS-Swift 3)

转载 作者:行者123 更新时间:2023-12-01 17:20:06 25 4
gpt4 key购买 nike

我在TableViewCell中实现了CollectionView,但是我需要读取CollectionView上设置单元格的动态数据。

我可以从TableViewCell类读取扩展中的数据,也许可以帮助我将数据从ViewController传递到TableViewCell类。

 class MultipleTableViewCell: UITableViewCell {

@IBOutlet fileprivate weak var collectionView: UICollectionView!

}

extension MultipleTableViewCell : UICollectionViewDataSource {

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 3 // array.count
}

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

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "foodCell", for: indexPath) as! UserCollectionViewCell

let dict = array.object(at: indexPath.row) as! NSDictionary //Like this

cell.name.text = "How do you read data from ViewController"
cell.email.text = "How do you read data from ViewController"
cell.phone.text = dict["phone"] as? String //Like this
cell.image.image = "How do you read data from ViewController"

return cell
}

}

extension MultipleFoodTableViewCell : UICollectionViewDelegateFlowLayout {

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

let itemsPerRow:CGFloat = 1
let hardCodedPadding:CGFloat = 20
let itemWidth = (collectionView.bounds.width / itemsPerRow) - hardCodedPadding
let itemHeight = collectionView.bounds.height - (2 * hardCodedPadding)
return CGSize(width: itemWidth, height: itemHeight)
}

}

最佳答案

最简单的方法是在MultipleTableViewCell中使用要填充CollectionView的数据源数组创建一个方法。现在在cellForRowAtTableView方法中调用此方法。

class MultipleTableViewCell: UITableViewCell {

@IBOutlet fileprivate weak var collectionView: UICollectionView!

var array = [String]() //Change with Your array type

func fillCollectionView(with array: [String]) {
self.array = array
self.collectionView.reloadData()
}
}

现在,在 cellForRowAt中调用此方法,并为 collectionView传递数据源数组。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier") as! MultipleTableViewCell
cell.fillCollectionView(with: ["A","B","C"]) //Pass your array
return cell
}

关于ios - 如何将数据传递到嵌入在TableViewCell中的UICollectionView(xCode-iOS-Swift 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42651196/

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