【发布时间】:2023-03-10 08:22:01
【问题描述】:
我正在尝试创建一个简单的 UIBarButtonItem Swift 子类:
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(text) 初始化程序应直接委托给超类中的 init(customView)。为什么要调用init()?它不应该参与。
谁能解释发生了什么?当我尝试继承其他 UIKit 类时,也出现了类似的问题
【问题讨论】:
-
这是一个子类化 UILabel 的例子,它可能对stackoverflow.com/q/32662344/294884有帮助
标签: objective-c swift initializer designated-initializer