调用super.init()
时,会显示错误:
必须调用超类的指定初始值设定项' UICollectionViewCell'。
当我在swift 2.2版中使用它时,它确实工作得很好。
但是,一旦我将Xcode版本升级到8.0,我一直在使用Swift 3.0版,而super.init()
对我来说并不起作用。
答案 0 :(得分:0)
从swift3开始,他们删除了UICollectionViewCell的init()。所以你必须使用super.init(frame:CGRect)而不是普通的init()。
答案 1 :(得分:0)
您可以使用super.init(frame:CGRectZero)
答案 2 :(得分:0)
您可以使用便利初始化程序而不是指定的初始化程序
Swift有三个关于指定和便利初始化程序如何相互关联的规则。而不是试图解释它们,我只是直接引用Apple的iBook:
1)指定的初始化程序必须从其直接超类中调用指定的初始化程序。
2)一个便利初始化器必须从同一个类调用另一个初始化器。
3)便利初始化程序必须最终调用指定的初始化程序。
摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l
而不是
init() {
super.init()
}
你可以使用
convenience init() {
self.init()
}
答案 3 :(得分:0)
您只需按照错误消息中的说明调用指定的初始值设定项
指定的初始值设定项为public init(style: UITableViewCellStyle, reuseIdentifier: String?)
:
// Designated initializer. If the cell can be reused, you must pass in a reuse identifier. You should use the same reuse identifier for all cells of the same form.
@available(iOS 3.0, *)
public init(style: UITableViewCellStyle, reuseIdentifier: String?)
所以你需要调用类似的东西:
self.init(style: UITableViewCellStyle.default, reuseIdentifier: "myIdentifier")
或
super.init(style: UITableViewCellStyle.default, reuseIdentifier: "myIdentifier")
而不是super.init()