Я вложил collection view
внутрь ячейки табличного представления. Мне нужно реализовать экран, похожий на экран магазина приложений Netflix. Если у вас есть такие категории, как
Мне нужно загрузить данные из JSON, например - «Популярные» могут иметь 11 видео , «Действие» может иметь 3 видео, а «Приключения» может иметь 20. Таким образом, внутри каждой ячейки табличного представления это заданное c представление коллекции будет загружать различное количество ячеек представления коллекции в зависимости от того, сколько видео в каждой категории (Популярные , Action, Adventure), которая будет отображаться в собственном соответствующем горизонтальном представлении коллекции.
Пока что с моим кодом я отображаю название каждой категории в заголовке табличного представления. Но внутри этой категории, внутри представления коллекции numberOfItemsInSection и cellForItemAt , я не могу найти способ загрузки каждого представления коллекции взаимозависимо. Например, Сборное представление 1 , относящееся к Популярному, должно загружать 11 ячеек, Сборное представление 2 , относящееся к Действию, должно загружать 3 ячейки. Ниже приведен мой код
Мои методы просмотра таблиц, которые находятся внутри регулятора обзора
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!
}
МОЙ КОЛЛЕКЦИЯ ПРОСМОТР ДЕЛЕГАТОВ, КОТОРЫЕ ТАКЖЕ ВНУТРИ КОНТРОЛЛЕРА ПРОСМОТРА *
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!
}