Я пытаюсь добавить заголовок в collectionView
с помощью пользовательского xib-файла. Я создал файл xib
с использованием класса UICollectionReusableView
. В collectionViewController
Я зарегистрировал xib
файл вроде этого:Добавить пользовательский заголовок в коллекцию view swift
self.collectionView.register(UINib(nibName: HCollectionReusableView.nibName, bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: HCollectionReusableView.reuseIdentifier)
и после этого в viewForSupplementaryElementOfKind
я
let header = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: HCollectionReusableView.reuseIdentifier, for: indexPath) as! HCollectionReusableView
и для проклейки
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
return CGSize(width: 100, height: 50)
}
я получаю сообщение об ошибке: Не удалось загрузить NIB в пакете. любой недостающий код?
HCollectionReusableView класс:
class HCollectionReusableView: UICollectionReusableView {
static var nibName : String
{
get { return "headerNIB"}
}
static var reuseIdentifier: String
{
get { return "headerCell"}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
}
Я думаю, что я должен измените регистрацию xib на класс, вот теперь ошибка: не удалось удалить вид вида: UICollectionElementKindSectionHeader с идентификатором HCollectionReusableView - должен зарегистрировать nib или класс для идентификатор или соединить прототип ячейки в раскадровке (null) –
вы получаете ошибку, так как идентификаторы, когда вы декалируете элемент и когда вы регистрируете, не совпадают ... попробуйте жестко указать идентификатор, как это, когда вы зарегистрируете ячейку: 'self.collectionView.register (UINIB (nibName: HCollectionReusableView.nibName, bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier:" HCollectionReusableView ") ' это должно работать ... тогда вы можете просто скорректировать код в соответствии с вашими потребностями – John
вы зарегистрируете класс только в том случае, если вы вообще не используете Xib или Storyboard – John