调用

时间:2016-03-02 04:14:39

标签: ios iphone swift uiview uibutton

我已将自定义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'

1 个答案:

答案 0 :(得分:4)

替换此行

let fromDateBtn:UIButton = AccountOpeningButton()

有了这个:

let fromDateBtn = AccountOpeningButton()

并在您的课程中添加此方法

override init(frame: CGRect) {
        super.init(frame: frame)
    }
  

您可以拥有多个init方法,但必须遵守   继承和层次结构规则。你需要明白的   什么叫做便利初始化器。

有关详细信息,请查看Here