我有一个集合视图,它是一个类属性,我想像这样设置它:
var collectionView: UICollectionView = {
let cv = UICollectionView()
cv.delegate = self
cv.dataSource = self
return cv
}()
但是这给了我一个错误,那就是self不是UICollectionViewDelegate / UICollectionViewDataSource类型的,这是有道理的,因为闭包不是那种类型。我想知道是否有可能从闭包内部引用类实例?还是应该以其他方法设置委托和数据源?我一直在寻找解决方案,但未找到有关通过闭包设置委托的任何信息。
谢谢。
答案 0 :(得分:7)
您可以将属性从var
更改为lazy var
,因为仅在首次使用惰性属性时才初始化它们。这样可以解决您的问题。
lazy var collectionView: UICollectionView = {
let cv = UICollectionView()
cv.delegate = self
cv.dataSource = self
return cv
}()