Ios 作为collectionView的委托和数据源的自定义单元格类内的init()
试图初始化自定义单元格类中的某些东西时,我真的很困惑,我想成为collectionview的数据源和委托 如何初始化()以使数组中的数据可供cellForItemAt使用Ios 作为collectionView的委托和数据源的自定义单元格类内的init(),ios,swift,uicollectionview,init,Ios,Swift,Uicollectionview,Init,试图初始化自定义单元格类中的某些东西时,我真的很困惑,我想成为collectionview的数据源和委托 如何初始化()以使数组中的数据可供cellForItemAt使用 var partArray : [CollectionStruct] = [] init(partArray: [CollectionStruct]) { super.init(partArray: [CollectionStruct]) innerCollectionView.delegate = self
var partArray : [CollectionStruct] = []
init(partArray: [CollectionStruct]) {
super.init(partArray: [CollectionStruct])
innerCollectionView.delegate = self
innerCollectionView.dataSource = self
//innerCollectionView.tag = item
// add some stuff from local sql lite to array
// this is how i normally do this in viewDidLoad
// but cant use that in cell subclass
BuildArray.buildArrayFromQuery(queryForCollection: "Part", delegateSender: "DownloadPack", completeBlock: { (result) in
if result.isEmpty == false {
self.partArray = result
}
})
}
如果我这样做:
init() {
// stuff for the array
}
我得到斯威夫特的建议,我包括这个街区:
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
无法为UITableViewCell创建自己的初始值设定项。您只能覆盖两个初始值设定项,一个接收帧(
init(frame)
),另一个接收代码(init(coder)
)
为了找到问题的解决方案,可以使用接收数据数组的属性或方法。创建单元格后,将调用或设置其中一个。进行设置,然后调用collectionView的reloadData()
如果您决定使用属性,可以在属性的
didSet
中执行上述逻辑。您不能创建自定义初始化器。您需要实现所需的初始化器并提供一些其他函数来加载数据。只需在重新加载单元格对象collectionview之前分配数据。我不明白这意味着什么。。在这种情况下,数据从何处重新加载?如果单元格是嵌套集合视图的数据源,则需要在此处分配数据?@Paulw11所需的初始化器是什么?init(coder)
和init(frame)
,但不需要覆盖这些初始化器。您需要添加一个附加函数来设置数据,并在创建单元格后调用该函数。