不能子类UIButton:必须调用超类的指定初始化程序' UIButton'

时间:2015-09-02 01:12:57

标签: ios swift uibutton

尝试继承UIButton,但发生错误Must call a designated initializer of the superclass 'UIButton'

研究多个SO帖子like thisthisthis或其他几个帖子没有帮助,因为这些解决方案无效。

我们如何在Swift中继承UIButton并定义自定义初始化函数?

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()
        ...
    }
}

1 个答案:

答案 0 :(得分:13)

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

Swift 3& 4:

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

Swift 1& 2:

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

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