Представление коллекции внутри ячейки представления таблицы не вызывается

Я пытаюсь реализовать представление коллекции внутри ячейки представления таблицы.

Моя ячейка представления таблицы представляет собой 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") в начало функции, она никогда не отображается в консоли.

Что я делаю не так?


person user6724161    schedule 01.06.2019    source источник


Ответы (1)


Я думаю, проблема в том, что высота представления коллекции очень мала, поэтому она не отображается. Попробуйте установить высоту для ячейки представления таблицы:

func tableView(_: UITableView, heightForRowAt _: IndexPath) -> CGFloat {
     return 100
}

где 100 должно быть больше, чем представление коллекции

person Mostafa Sayed    schedule 01.06.2019
comment
Отображаются табличное представление и ячейка табличного представления. Это представление коллекции и ячейка, которые не являются. - person user6724161; 02.06.2019
comment
@ user6724161 вы нашли решение - person droid; 13.09.2020