Пустая пользовательская ячейка коллекции в программе c UICollectionViewController - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь программно реализовать UICollectionViewController (НЕ используя раскадровку, хотя мой проект действительно использует раскадровку для других вещей). Я могу подключить свой источник данных и отобразить количество ячеек, соответствующее количеству совпадений из моего индекса, но ячейки пустые и общие; моя пользовательская ячейка не отображается должным образом.

import UIKit
import InstantSearch

private let reuseIdentifier = "CollectionGridCell"

class ResultsCollectionViewController: UICollectionViewController, HitsController {

    var hitsSource: HitsInteractor<Test>?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        collectionView.dataSource = self
        collectionView.delegate = self
        collectionView.register(CollectionGridCell.self, forCellWithReuseIdentifier: reuseIdentifier)
        collectionView.backgroundColor = .clear
        // Do any additional setup after loading the view.
    }

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
 
        return hitsSource?.numberOfHits() ?? 0    }

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CollectionGridCell

        // Configure the cell
         let hit = hitsSource?.hit(atIndex: indexPath.row)
        cell.backgroundColor = UIColor.red

        return cell
    }
}

Этот UICollectionTableViewController является частью StackView. Из родительского V C он инициализируется следующим образом:

 let hitsCollectionController = ResultsCollectionViewController(collectionViewLayout: UICollectionViewFlowLayout())
 stackView.addArrangedSubview(hitsCollectionController.collectionView)

Это то, что я вижу. Обратите внимание, что количество квадратов точно отражает количество элементов в моем источнике данных.

enter image description here

Here is my xib file, if that helps any.

enter image description here

введите описание изображения здесь

Я ожидал, что у ячеек должна быть метка с надписью «Test» внутри, которую я могу установить на основе попадания. Вместо этого они просто пустые и кажутся ячейками по умолчанию. Моя ячейка не регистрируется / не отображается должным образом. У меня есть ощущение, что это как-то связано с настройками макета, но я действительно не уверен. У меня есть соответствующее табличное представление, которое отлично работает.

1 Ответ

1 голос
/ 01 августа 2020

Вы создали ячейку в файле пера, поэтому вам нужно зарегистрировать ее с помощью инициализатора пера, указав имя файла пера.

collectionView.register(UINib(nibName: <#T##String#>, bundle: nil), forCellWithReuseIdentifier: reuseIdentifier) // provide the nib file name in the placeholder
...