У меня есть tableView с collectionViews, вложенными в каждую tableViewCell.Каждый tableViewCell - это жанр фильма, а collectionViewCells - это фильмы.Я пытаюсь сказать collectionView, какой TableView indexPath это так, чтобы он мог отображать правильные данные.
Проблема у меня заключается в том, как вы прокручиваете collectionView (и TableView) изменения чисел (I ')мы получили метку в ячейке collectionView, отображающую TableView indexPath.row).Также, если я прокручиваю до конца collectionView в первой ячейке tableView, collectionViewCell в 4-м или около того tableViewCell также будет прокручиваться до конца, как если бы они были «связаны».
Чтобы получить вложенный элементЯ следую этому макету https://youtu.be/4XnXHov2lQU Я бы изначально настроил collectionView из класса TableViewCell, но, как объяснено в видео, это не соответствует MVC.
Чтобы получить tableViewIndexPath
Я просто установил переменную в TableView cellForRowAt
, а затем установил метку в collectionView на это.
Каков будет правильный способ сделать это, так как я видел другие вопросы и отвечал на это, но довольноМногие из них создают одну и ту же проблему.
РЕДАКТИРОВАТЬ - TableViewController.swift
class TableViewController: UITableViewController {
var tableViewIndexPath = Int()
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 230
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath) as! tableViewCellClass
tableViewIndexPath = indexPath.row
cell.collectionView.dataSource = self
cell.collectionView.reloadData()
return cell
}
}
extension TableViewController : UICollectionViewDataSource {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewCell", for: indexPath)
let title = cell.viewWithTag(4) as! UILabel
title.text = String(tableViewIndexPath)
return cell
}
}
TableViewCellClass.swift
class tableViewCellClass: UITableViewCell {
@IBOutlet weak var collectionView: UICollectionView!
var indexPathForCell: IndexPath?
override func prepareForReuse() {
self.collectionView.contentOffset = .zero
self.collectionView.reloadData()
}
}