Ошибка initWithCoder при загрузке пользовательского Nib CollectionViewCell - PullRequest
0 голосов
/ 19 февраля 2019

Я создаю пользовательский UICollectionViewCell в файле .xib с указанным ниже кодом, но получаю эту ошибку:

Завершение работы приложения из-за необработанного исключения «NSGenericException», причина: «ЭтоКодер требует, чтобы замененные объекты были возвращены из initWithCoder: '

Все другие решения по переполнению стека имеют Objective C, поэтому я очень запутался в том, что делать.В моем NIB-файле класс задан в контроллере идентификации, как и идентификатор многократного использования.

UICollectionViewCell Я использую от API с именем Gemini, поэтому ячейка называется GeminiCell.Однако Gemini не является проблемой, поскольку он работает без использования NIB.

cellForItemAtIndexPath в контроллере представления

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    // Doesn't work
    let cell = Bundle.main.loadNibNamed("AlbumsCell", owner: self, options: nil)?[0] as! AlbumsCell

    // Also doesn't work
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! AlbumsCell

    return cell
}

Класс пользовательских ячеек

class AlbumsCell: GeminiCell {

    @IBOutlet weak var albumsImageView:UIImageView!

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

1 Ответ

0 голосов
/ 19 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...