Ios 作为collectionView的委托和数据源的自定义单元格类内的init()

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

试图初始化自定义单元格类中的某些东西时,我真的很困惑,我想成为collectionview的数据源和委托

如何初始化()以使数组中的数据可供cellForItemAt使用

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)
,但不需要覆盖这些初始化器。您需要添加一个附加函数来设置数据,并在创建单元格后调用该函数。