在从初始化程序返回之前,不会调用Super.init

我尝试给我的UITableViewCell类一个自定义的initilizer,但我无法弄清楚我做错了什么。

这是我的代码:

init(dataObject: [NSManagedObject]!, objectAttributeValues: [String]!,placeholder: String!, segmentedControl: UISegmentedControl?, cellHeight: CGRect, cellWidth: CGRect) { self.dataObject = dataObject self.Placeholder.text = placeholder self.objectAttributeValues = objectAttributeValues if segmentedControl != nil { self.segmentedControl = segmentedControl! didHaveSegmentedControl = true } } required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } 

我试图调用super.init(frame:CGRect(…)),但通过实现这个我得到了另一个错误: 必须调用超类'UITableViewCell'的指定初始值设定项

我能做什么? 万分感谢!

初始化程序的工作方式是将它们自己的属性,常量和函数添加到该实例,然后callback超类以获得它的types的对象。 更多信息在这里 。

出于这个原因,您必须在退出初始化程序之前调用超类的初始化程序。 这里我build议你在你的初始化程序的最后一行调用super.init() 。 你可以selectUITableViewCell上的哪个init方法是最合适的。

  override init(frame: CGRect) { super.init(frame: frame) } convenience init(frame: CGRect, dataObject: [NSManagedObject]!, objectAttributeValues: [String]!,placeholder: String!, segmentedControl: UISegmentedControl?, cellHeight: CGRect, cellWidth: CGRect){ self.init(frame: frame) self.dataObject = dataObject self.Placeholder.text = placeholder self.objectAttributeValues = objectAttributeValues if segmentedControl != nil { self.segmentedControl = segmentedControl! didHaveSegmentedControl = true } } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } 

我希望这将帮助你快速覆盖UIView的init方法