Я обновил сегодня до Xcode 11 с 10.3 и запустил свое приложение на симуляторе iPhone под управлением iOS 13. Сразу же приложение упало, выдав следующую ошибку:
Завершение работы приложения из-за необработанного исключения 'NSInternalInconsistencyException ', причина:' не удалось удалить из очереди представление вида: UICollectionElementKindCell с идентификатором EventCell - необходимо зарегистрировать перо или класс для идентификатора или подключить ячейку прототипа в раскадровке '
У меня естьФайл EventCell.xib
и файл EventCell.swift
с классом EventCell
.Теперь я уже позвонил collectionView.register()
и зарегистрировал свой Nib в viewDidLoad()
, фактически этот код продолжает работать на моем физическом устройстве iOS 12.4 и на симуляторах iOS 12.2.Я не могу понять, что изменилось в iOS 13 на UICollectionView
, так как код успешно компилируется, но во время выполнения происходит сбой.
Здесь ячейка зарегистрирована внутри viewDidLoad
:
// MARK: UICollectionView
collectionView.register(UINib(nibName: "EventCell", bundle: nil), forCellWithReuseIdentifier: "EventCell")
collectionView.contentInset = UIEdgeInsets(top: 65, left: 0, bottom: 0, right: 0)
collectionView.scrollIndicatorInsets = UIEdgeInsets(top: 65, left: 0, bottom: 0, right: 0)
collectionView.backgroundColor = applicationScheme.colorScheme.backgroundColor
Это код, который создает ячейку:
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "EventCell", for: indexPath) as! EventCell
cell.imageView.image = UIImage(named: "fill")
cell.titleLabel.text = "Titolo di prova"
cell.dateLabel.text = "00/00/0000"
cell.timeLabel.text = "00:00"
return cell
}