«UICollectionView должен быть инициализирован с параметром макета, не равным нулю» - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь создать простой collectionView в первый раз после этого учебника

Я до сих пор следовал за шагами и также удостоверился, что ничего не пропустил. Проблема в том, что я получаю эту ошибку:

Завершение работы приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «UICollectionView должен быть инициализирован с параметром макета, отличным от nil»

Я просматривал разные посты с одной и той же проблемой, но мне кажется, что ни один из ответов не исправляет мой код. Учебное пособие не определяет начальный размер макета для collectionView, поэтому я предположил, что XCode просто сделал его границами представления автоматически, чтобы у него не было ненулевого макета?

class shootDaysCollectionView: UICollectionViewController, UICollectionViewDelegateFlowLayout {

    private let cellId = "cellId"

    override func viewDidLoad() {

    }

    // VIEW WILL APPEAR
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.tabBarController?.navigationItem.title = "SHOOT DAYS"

        collectionView?.backgroundColor = UIColor.white
        collectionView?.register(shootDayCell.self, forCellWithReuseIdentifier: cellId) 
    }

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! shootDayCell

        return cell
    }

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 3
    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: CGFloat(view.frame.width), height: <#T##CGFloat#>)
    }
}

class shootDayCell: UICollectionViewCell {

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupViews()
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    func setupViews(){
        backgroundColor = UIColor.red
    }
}

Заранее большое спасибо!

1 Ответ

0 голосов
/ 02 сентября 2018

Вместо создания экземпляра vc с

shootDaysCollectionView()

использовать

shootDaysCollectionView(collectionViewLayout: UICollectionViewFlowLayout())

, если вы хотите настроить

let lay = UICollectionViewFlowLayout()

lay...

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