Что я делаю, я использую раскадровку и настраиваю делегатов и источник данных из раскадровки, перетаскивая их в классы.
a) Установите делегатов и источник данных TableView в ViewController
b) Установите делегатов и источник данных CollectionView в TableViewCell (TheatreCell)
Код ViewController:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}
extension ViewController:UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let theaterCell:TheaterCell = tableView.dequeueReusableCell(withIdentifier: "TheaterCell", for: indexPath) as! TheaterCell
theaterCell.reloadCollectionView()
return theaterCell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
}
Код TheaterCell:
class TheaterCell: UITableViewCell {
@IBOutlet var showtimesCollection: UICollectionView!
override func awakeFromNib() {
super.awakeFromNib()
}
func reloadCollectionView() -> Void {
self.showtimesCollection.reloadData()
}
}
extension TheaterCell: UICollectionViewDataSource, UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = showtimesCollection.dequeueReusableCell(withReuseIdentifier: "timeCell", for: indexPath) as! TimeCell
cell.time.text = "1:00"
return cell
}
}
Код TimeCell:
class TimeCell: UICollectionViewCell {
@IBOutlet var time: UILabel!
}
Вот вывод:
ПРИМЕЧАНИЕ: ЕСЛИ ВЫ НЕ ИСПОЛЬЗУЕТЕ РАССКАЗЫ И ВЫ СДЕЛАЕТЕ КОЛЛЕКЦИЮ ИЛИ ТОЛЬКО ТАБЛИЦУ ИЗ КОДА, ТОГДА ВЫ ЗАРЕГИСТРИРУЕТЕ СВОЮ СОТОВУЮ ЭЛЕМЕНТУ КАК: А)TheaterCell должен быть зарегистрирован в классе ViewController B) TimeCell должен быть зарегистрирован в классе TheaterCell