【发布时间】:2016-12-02 20:59:27
【问题描述】:
我正在使用一个集合视图,并且我正在尝试创建一个元组数组,其中包含重用标识符、单元格的类型以及在tableView(_:cellForItemAt:) 中设置单元格时要调用的函数。
到目前为止一切都很好,除了功能。 Xcode 在数组的声明中抱怨它
“无法将类型 '(AddASpotInfoVC) -> (UICollectionViewCell) -> UICollectionViewCell' 的值转换为预期的元素类型 '(UICollectionViewCell) -> UICollectionViewCell'
AddASpotInfoVC 是视图控制器的类。这是数组的初始化本身:
typealias cellFunc = (_ aCell: UICollectionViewCell) -> UICollectionViewCell
let reuseIdentifiers: [(String, UICollectionViewCell.Type, cellFunc)] = [
("AddASpotInfoPicCell", AddASpotInfoPicCell.self, picCellFunc),
("AddASpotInfoNameCell", AddASpotInfoNameCell.self, nameCellFunc),
("AddASpotInfoDescCell", AddASpotInfoDescCell.self, descCellFunc),
("AddASpotInfoTagsCell", AddASpotInfoTagsCell.self, tagCellFunc)]
并且数组中的所有函数(目前)都在视图控制器类的扩展中(我认为它不应该是相关的......)并且看起来像这样
func picCellFunc(aCell: UICollectionViewCell) -> UICollectionViewCell {
return aCell
}
那么,我在数组初始化时做错了什么?
【问题讨论】:
-
尝试删除除一个以外的所有数组元素,然后将它们一一添加回来,看看是部分还是全部有问题。
-
AddASpotInfoPicCell.Type 不等于 UICollectionViewCell.Type。它是一种不同的类型。
-
问题是不能在
reuseIdentifiers变量的初始化中使用实例方法。您可以将初始化移动到方法(例如 viewDidLoad)或使其成为惰性属性。比较 stackoverflow.com/questions/25855137/…、stackoverflow.com/questions/25854300/…、stackoverflow.com/questions/39867568/… 是否存在类似(不相同)的问题。 -
@shallowThought : AddASpotInfoPicCell 是 UICollectionViewCell 的子类,声明为
class AddASpotInfoPicCell: UICollectionViewCell { },所以很好 -
@JimMatthews 是的,逐步构建数组的元组,当我添加函数时,一切都变得混乱了^^但是谢谢! :-)
标签: arrays swift compiler-errors swift3