Неустранимая ошибка настраиваемого заголовка: неожиданно обнаружено значение nil при развертывании необязательного значения

Вот моя функция переопределения для UICollectionUICollectionViewControllerView

override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
        var view =  UICollectionReusableView()
        if kind == UICollectionElementKindSectionHeader {
            let viewHeader : Header = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "header", forIndexPath: indexPath) as! Header
            if let userName = viewHeader.userName {
                userName.text = "James Bond"
            }

            view = viewHeader
        }

        return view

    }

Проблема в том, что всякий раз, когда я пытался запустить приложение, после отладки всегда появлялась всплывающая ошибка «фатальная ошибка: неожиданно обнаружен ноль при разворачивании необязательного значения» в строке

let viewHeader : Header = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "header", forIndexPath: indexPath) as! Header

Ниже мое переопределение viewDidLoad

override func viewDidLoad() {
super.viewDidLoad()

let layout = UICollectionViewFlowLayout()

collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
self.collectionView!.delegate = self
collectionView!.dataSource = self

collectionView!.registerClass(SquareCell.self, forCellWithReuseIdentifier: "cell")
collectionView!.registerClass(Header.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "header")  // UICollectionReusableView
layout.headerReferenceSize = CGSizeMake(self.view.frame.width, 200)

let cellNib = UINib(nibName: "SquareCell", bundle: nil)
collectionView!.registerNib(cellNib, forCellWithReuseIdentifier: "cell")

let headerlNib = UINib(nibName: "HeaderView", bundle: nil)
collectionView!.registerNib(headerlNib, forCellWithReuseIdentifier: "header")


self.view.addSubview(collectionView!)

}

person Hieu Nguyen    schedule 12.01.2016    source источник


Ответы (1)


Я обнаружил, что в своем классе Header.swift я случайно добавляю несуществующее имя изображения

override init(frame: CGRect) {
        super.init(frame: frame)
        self.cover.image = UIImage(named: "cover")
        self.userName.text = "Jame Bond"
    }

поэтому я удалил имя изображения и все вернулось к норме :)

person Hieu Nguyen    schedule 12.01.2016