I создаю класс для collectionView и добавляю CollectionView в Viewcontroller для представления, как показано ниже.
init(){
let collectionViewLayout = UICollectionViewFlowLayout();
super.init(frame: CGRect.zero, collectionViewLayout: collectionViewLayout)
self.register(UICollectionViewCell.self, forCellWithReuseIdentifier: kCellIdentifier_SampleCollectionViewCell)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: kCellIdentifier_SampleCollectionViewCell, for: indexPath)
cell.contentView.backgroundColor = UIColor.brown
return cell
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: collectionView.bounds.size.width - 16, height: 120)
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 8
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets.init(top: 8, left: 8, bottom: 8, right: 8)
}
Затем я перенес этот collectionView в контроллер MainView, инициализировал и установил делегатов, как показано ниже.
open lazy var sampleeCollectionView: SampleCollectionView = { [unowned self] in
let collectionview = SampleCollectionView()
collectionview.translatesAutoresizingMaskIntoConstraints = false
collectionview.dataSource = self
collectionview.delegate = self
return collectionview
}()
В настоящее время приложение дает сбой, любой может предложить, как мы можем решить. Здесь я добавляю источник данных и делегирую в viewController, который я представляю. Если я изменю это на класс CollectionView, он будет работать. Можно ли сохранить это в месте инициализации
Добавьте также журнал сбоев или просто фразу с завершением работы приложения из-за и т. д.
Пожалуйста, добавьте журнал сбоев для получения дополнительной информации





Вы используете раскадровку и не зарегистрировали Xib в своей ячейке или не создали прототип в раскадровке с идентификатором, который вы пытаетесь использовать повторно.
Учитывая, что у вас есть метод инициализации, он, вероятно, не вызывается, поэтому я предполагаю, что проблема в раскадровке.
Нет, я не использую раскадровку, я использую ограничения
В этом случае похоже, что ваш метод регистрации не запускается, поместите точку останова, чтобы увидеть, вызывается ли метод регистрации до cellForItemAtIndexPath.
Добавьте self.delegate = self и self.dataSource = self в свой метод инициализации.
Хотите включить фактическое сообщение об ошибке?