swift报错UICollectionView must be initialized with a non-nil layout parameter

今天学习swift的UICollectionView时候项目运行就报错,控制台显示
“UICollectionView must be initialized with a non-nil layout parameter”,意思很明显就是UICollectionView初始化时候没有给个有效的layout,就是说UICollectionViewFlowLayout没有初始化,我就纳闷了明明是初始化了啊

1
2
3
全局变量
private var layout = UICollectionViewFlowLayout()
private var collectionView :UICollectionView()

然后在viewDidLoad里

1
collectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)

看起来没什么问题,才初学swift不知道

1
private var collectionView :UICollectionView()

这样写已经是初始化了,所以就报错了,应该在声明变量的时候改为如下写法

1
private var collectionView :UICollectionView!

这样就就只是声明变量了再在viewDidLoad里初始化使用就没问题了

1
2
layout = UICollectionViewFlowLayout()
collectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)