我已将自定义UIButton编码为:
class AccountOpeningButton: UIButton {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
......
}
}
我可以使用Storyboard成功实例化此类。 现在,我做了一个UIView&想在我的UIView中添加这个按钮:
var customView:UIView = UIView()
customView.frame = CGRect(x: 0, y: 0, width: 350, height: 250)
.....
let fromDateBtn:UIButton = AccountOpeningButton()//Error comes here as : Missing Argument for parameter ‘coder’ in call
customView.addSubview(fromDateBtn)
所以请帮助我们动态地重复使用这段代码。
P.S。 :我提到http://napora.org/nscoder-and-swift-initialization/ Fatal error: use of unimplemented initializer 'init(coder:)' for class Class does not implement its superclass's required members 但是没有成功。
=============================================== ======================== 的受审
let fromDateBtn:UIButton = UIButton() as! AccountOpeningButton
这会抛出CastException 无法转换类型' UIButton'的值到' .AccountOpeningButton'
答案 0 :(得分:4)
替换此行
let fromDateBtn:UIButton = AccountOpeningButton()
有了这个:
let fromDateBtn = AccountOpeningButton()
并在您的课程中添加此方法
override init(frame: CGRect) {
super.init(frame: frame)
}
您可以拥有多个init方法,但必须遵守 继承和层次结构规则。你需要明白的 什么叫做便利初始化器。
有关详细信息,请查看Here