为具有闭包默认值的属性设置委托



我有一个集合视图,它是一个类属性,我想像这样设置它:

var collectionView: UICollectionView = {
let cv = UICollectionView()
cv.delegate = self
cv.dataSource = self
return cv
}()

但是,这给了我一个错误,即self不是UICollectionViewDelegate/UICollectionViewDataSource的类型,这是有道理的,因为闭包不是那种类型。我想知道是否可以从闭包内部引用类实例?还是应该以不同的方法设置委托和数据源?我已经搜索了一个解决方案,但没有找到任何关于通过闭包设置委托的信息。

谢谢。

您可以将属性从var更改为lazy var,因为惰性属性仅在首次使用时才初始化。因此,这将解决您的问题。

lazy var collectionView: UICollectionView = {
let cv = UICollectionView()
cv.delegate = self
cv.dataSource = self
return cv
}()

最新更新