Ios 为';s具有闭包的默认值
我有一个属于类属性的集合视图,我希望将其设置为:Ios 为';s具有闭包的默认值,ios,swift,delegates,initialization,Ios,Swift,Delegates,Initialization,我有一个属于类属性的集合视图,我希望将其设置为: var collectionView: UICollectionView = { let cv = UICollectionView() cv.delegate = self cv.dataSource = self return cv }() 然而,这给了我一个错误,self不是UICollectionViewDelegate/UICollectionViewDataSource类型,这很有意义,因为闭包不是那
var collectionView: UICollectionView = {
let cv = UICollectionView()
cv.delegate = self
cv.dataSource = self
return cv
}()
然而,这给了我一个错误,self不是UICollectionViewDelegate/UICollectionViewDataSource类型,这很有意义,因为闭包不是那种类型。我想知道的是,是否可以从闭包内部引用类实例?或者我应该用不同的方法设置委托和数据源吗?我已经搜索了一个解决方案,但没有找到任何关于通过闭包设置委托的内容
谢谢。您可以将属性从
var
更改为lazy var
,因为lazy属性只有在第一次使用时才会初始化。因此,这将解决您的问题
lazy var collectionView: UICollectionView = {
let cv = UICollectionView()
cv.delegate = self
cv.dataSource = self
return cv
}()