Я пытаюсь реализовать представление коллекции внутри ячейки табличного представления.
Моя ячейка табличного представления - это xib, и я перетащил в нее представление коллекции.
Затем я создал класс и xib для ячейки представления коллекции:
class MyCollectionViewCell: UICollectionViewCell {
var media: Image?
@IBOutlet weak var imageView: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func initialize(media: PostImage) {
self.media = media
if let url = media.url {
imageView.kf.setImage(with: URL(string: url))
}
}
}
И я дал XIB класс «MyCollectionViewCell», а также присвоил ему идентификатор «MyCollectionViewCell».
Затем в классе ячеек табличного представления я сделал следующее:
class MyTableViewCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
var post: Post!
@IBOutlet weak var title: UILabel!
@IBOutlet weak var mediaCollectionView: UICollectionView!
override func awakeFromNib() {
super.awakeFromNib()
mediaCollectionView.delegate = self
mediaCollectionView.dataSource = self
let mediaCollectionViewCell = UINib(nibName: "MyCollectionViewCell", bundle: nil)
mediaCollectionView.register(mediaCollectionViewCell, forCellWithReuseIdentifier: "MyCollectionViewCell")
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 2
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCollectionViewCell", for: indexPath as IndexPath) as? MyCollectionViewCell else {
fatalError("The dequeued cell is not an instance of MyCollectionViewCell.")
}
let media = post.images[indexPath.row]
cell.initialize(media: media)
return cell
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func initialize(post: Post) {
self.post = post
title.text = post.title
self.mediaCollectionView.reloadData()
}
}
Проблема в том, что представление коллекции никогда не отображается, когда я запускаю это. Текст заголовка заголовка отображается нормально, но представление коллекции не отображается, и я не знаю, что я делаю неправильно.
cellForItemAt
, кажется, даже не вызывается, потому что когда я добавляю print("hello")
вверху функции, он никогда не появляется в консоли.
Что я делаю не так?