不能子类化UIButton:必须调用超类’UIButton’的指定初始值设定项

尝试inheritanceUIButton,但错误Must call a designated initializer of the superclass 'UIButton'

研究这样的几个SOpost, 这个 , 这个或其他几个没有帮助,因为这些解决方案不起作用。

我们如何在Swift中UIButton并定义自定义init函数?

 import UIKit class KeyboardButton : UIButton { var letter = "" var viewController:CustomViewController? required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } init(letter: String, viewController: CustomViewController) { super.init() ... } } 

你必须调用超类’指定初始值设定项:

Swift 3&4:

 init(letter: String, viewController: CustomViewController) { super.init(frame: .zero) } 

斯威夫特1和2:

 init(letter: String, viewController: CustomViewController) { super.init(frame: CGRectZero) } 

正如Paulw11在评论中所说,除了作为使用委托模式的弱引用之外,视图通常不应该引用其控制器,这将提高可重用性。