2016-11-07 61 views
2

被稱爲當super.init()被調用時,它顯示了錯誤:super.init()不能在swift3

Must call a designated initializer of the superclass 'UICollectionViewCell'.

它確實工作完美,當我在SWIFT版本2.2中使用它。

但是,一旦我將Xcode版本升級到8.0,我一直在使用Swift版本3.0和super.init()不適用於我。

回答

0

從swift3開始,他們已經刪除了一個UICollectionViewCell的init()。所以你必須使用super.init(frame:CGRect)而不是普通的init()。

0

可以使用super.init(幀:CGRectZero)

0

可以使用便利的初始化,而不是

夫特具有三個規則,規定如何指定和便利初始化相互關聯指定初始化。我只是直接引用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() 
} 
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()