UIButton 子类在情节提要中崩溃
UIButton Subclass Crashes When in Storyboard
我有一个 UIButton 的子类,当我将按钮添加到故事板中的视图控制器时,我的应用程序崩溃并显示 fatalError("init(coder:) has not been implemented"
)。如果我在代码中手动添加子类按钮,它工作正常。我做错了什么?
import UIKit
class RAPanicButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
self.layer.cornerRadius = self.frame.height / 2
self.layer.masksToBounds = true
self.clipsToBounds = true
self.backgroundColor = .red
self.setTitle("Panic!", for: .normal)
self.titleLabel?.textColor = .white
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
}
故事板中的内容将通过调用 init(coder:)
初始化程序进行初始化。这意味着如果你想在故事板中使用你的视图,你不能在 init(coder:)
.
中抛出 fatalError
您可以在两个初始化程序中放入相同的代码:
func setup() {
self.layer.cornerRadius = self.frame.height / 2
self.layer.masksToBounds = true
self.clipsToBounds = true
self.backgroundColor = .red
self.setTitle("Panic!", for: .normal)
self.titleLabel?.textColor = .white
}
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
我有一个 UIButton 的子类,当我将按钮添加到故事板中的视图控制器时,我的应用程序崩溃并显示 fatalError("init(coder:) has not been implemented"
)。如果我在代码中手动添加子类按钮,它工作正常。我做错了什么?
import UIKit
class RAPanicButton: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
self.layer.cornerRadius = self.frame.height / 2
self.layer.masksToBounds = true
self.clipsToBounds = true
self.backgroundColor = .red
self.setTitle("Panic!", for: .normal)
self.titleLabel?.textColor = .white
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
}
故事板中的内容将通过调用 init(coder:)
初始化程序进行初始化。这意味着如果你想在故事板中使用你的视图,你不能在 init(coder:)
.
fatalError
您可以在两个初始化程序中放入相同的代码:
func setup() {
self.layer.cornerRadius = self.frame.height / 2
self.layer.masksToBounds = true
self.clipsToBounds = true
self.backgroundColor = .red
self.setTitle("Panic!", for: .normal)
self.titleLabel?.textColor = .white
}
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}