gpt4 book ai didi

ios - 表格 View 单元格Swift iOS中的嵌套 Collection View

转载 作者:行者123 更新时间:2023-12-01 19:36:47 28 4
gpt4 key购买 nike

我正在嵌套 collection view在表格 View 单元格内。我需要实现一个类似于 netflix 应用商店的屏幕。 您有诸如 之类的类别的位置enter image description here

例如,我需要从 JSON 加载数据——“流行”可能有 11 个视频,“ Action ”可能有 3 个视频,“冒险”可能有 20 个。因此,在每个表格 View 单元格中,将加载特定的 Collection View 不同数量的 Collection View 单元格取决于每个类别(热门、 Action 、冒险)中的视频数量,这些视频将显示在其各自的水平 Collection View 中。

到目前为止,我的代码在表格 View 标题中显示了每个类别标题。但是在该类别中,在 Collection View numberOfItemsInSection 和 cellForItemAt 中,我找不到相互依赖地加载每个 Collection View 的方法。例如, Collection View 1 与流行相关的,应加载 11 个单元格,收藏查看 2 与 Action 相关的应该加载 3 个单元格。以下是我到目前为止的代码

我在 View Controller 内的 TableView 方法

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}

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

guard let cell = tableView.dequeueReusableCell(withIdentifier: "categoriesCell") as? CategoriesTableViewCell else { return UITableViewCell() }

return cell
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

return arrayOfCategoryObjects[section].title
}

func numberOfSections(in tableView: UITableView) -> Int {
return arrayOfCategoryObjects.count
}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

if let cell = cell as? CategoriesTableViewCell {


cell.moviesCollectionView.dataSource = self
cell.moviesCollectionView.delegate = self

cell.moviesCollectionView.reloadData()

}
}

我的表查看单元
class CategoriesTableViewCell: UITableViewCell {

@IBOutlet weak var moviesCollectionView: UICollectionView!

}

我的 Collection View 代表也在 View Controller 中
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// print(arrayOfCategoryObjects[section].movies[section])

return arrayOfCategoryObjects[section].movies.count

}

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


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

cell.movieTitleLbl.text = arrayOfCategoryObjects[indexPath.item].movies[indexPath.item]

return cell

}

我的收藏 查看手机
class MoviesCollectionViewCell: UICollectionViewCell {

@IBOutlet weak var movieTitleLbl: UILabel!

}

最佳答案

您需要为您的UICollectionView 设置标签作为家长 UITableViewCellindexPath.section :

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

if let cell = cell as? CategoriesTableViewCell {

cell.moviesCollectionView.dataSource = self
cell.moviesCollectionView.delegate = self
cell.moviesCollectionView.tag = indexPath.section
cell.moviesCollectionView.reloadData()

}
}

然后在你的 UICollectionView 的委托(delegate)中:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

return arrayOfCategoryObjects[collectionView.tag].movies.count

}

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

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

cell.movieTitleLbl.text = arrayOfCategoryObjects[collectionView.tag].movies[indexPath.item]

return cell

}

希望这可以帮助!

关于ios - 表格 View 单元格Swift iOS中的嵌套 Collection View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901183/

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