Ios super.init()无法';不能叫迅捷3

Ios super.init()无法';不能叫迅捷3,ios,swift,swift3,uicollectionviewcell,Ios,Swift,Swift3,Uicollectionviewcell,调用super.init()时,会显示错误: 必须调用超类“UICollectionViewCell”的指定初始值设定项 当我在swift版本2.2中使用它时,它确实工作得很好 但是,一旦我将Xcode版本升级到8.0,我就一直在使用Swift版本3.0,super.init()对我不起作用。从swift3开始,他们已经删除了UICollectionViewCell的init()。因此,您必须使用super.init(frame:CGRect)而不是普通的init()。您可以使用super.in

调用
super.init()
时,会显示错误:

必须调用超类“UICollectionViewCell”的指定初始值设定项

当我在swift版本2.2中使用它时,它确实工作得很好


但是,一旦我将Xcode版本升级到8.0,我就一直在使用Swift版本3.0,
super.init()
对我不起作用。

从swift3开始,他们已经删除了UICollectionViewCell的init()。因此,您必须使用super.init(frame:CGRect)而不是普通的init()。

您可以使用super.init(frame:CGRectZero)

您可以使用方便的初始值设定项而不是指定的初始值设定项

Swift有三条关于指定初始值设定人和便利初始值设定人之间关系的规则。我不想解释它们,而是直接引用苹果的iBook:

1) 指定的初始值设定项必须从其直接超类调用指定的初始值设定项

2) 方便的初始值设定项必须调用同一类中的另一个初始值设定项

3) 方便的初始值设定项必须最终调用指定的初始值设定项

摘自:苹果公司《Swift编程语言》。iBooks

而不是

init() {

    super.init()
}
你可以用

convenience init() {

    self.init()
}

您只需调用错误消息中所述的指定初始值设定项。
指定的初始值设定项是public init(style:UITableViewCellStyle,reuseIdentifier:String?):

因此,您需要调用类似以下内容:

self.init(style: UITableViewCellStyle.default, reuseIdentifier: "myIdentifier")

而不是
super.init()

self.init(style: UITableViewCellStyle.default, reuseIdentifier: "myIdentifier")
super.init(style: UITableViewCellStyle.default, reuseIdentifier: "myIdentifier")