我試圖創建的UIBarButtonItem的一個簡單的斯威夫特子類:什麼原因導致UIBarButtonItem的初始值設定項繼承問題?
class LabelBarButtonItem: UIBarButtonItem {
let label: UILabel
init(text: String) {
self.label = UILabel(frame: CGRectZero)
self.label.tintColor = UIColor.grayColor()
super.init(customView: self.label)
self.label.text = text
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
但是當我嘗試實例是:
let countButton = LabelBarButtonItem(text: "0 items")
代碼編譯正確,但在運行時失敗:
fatal error: use of unimplemented initializer 'init()' for class 'TestProject.LabelBarButtonItem'
我不明白爲什麼在這種情況下會發生這種情況,或者一般會導致此問題的原因是什麼。初始值設定項應該直接委託給超類中的init(customView)
。爲什麼叫init()
呢?它不應該參與。
任何人都可以解釋發生了什麼?當我試圖將其他UIKit類別進行子類化時,彈出類似問題
這裏的子類的UILabel的一個例子,這可能有助於http://stackoverflow.com/q/32662344/294884 – Fattie 2015-09-19 00:50:14