我正在尝试使用3个不同的自定义UITableView
创建UITableViewCell
。它们都共享一些常见元素,例如UILabel
,称为questionLabel
。
我有三种类型的细胞
OneTextFieldTableViewCell
TwoLabelTableViewCell
ThreeLabelTableViewCell
我希望这些单元格从FormTableViewCell
继承,它们共享像上面提到的questionLabel
这样的常见UI元素。
代码:
class OneTextFieldTableViewCell: FormItemTableViewCell {
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var answerTextField: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
FormItemTableViewCell
class FormItemTableViewCell: UITableViewCell {
@IBOutlet weak var questionLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
我收到错误:
Cannot override with a stored property 'questionLabel'
Getter for 'questionLabel' with Objective-C selector 'questionLabel' conflicts with getter for 'questionLabel' from superclass 'FormItemTableViewCell' with the same Objective-C selector
Setter for 'questionLabel' with Objective-C selector 'setQuestionLabel:' conflicts with setter for 'questionLabel' from superclass 'FormItemTableViewCell' with the same Objective-C selector
答案 0 :(得分:0)
您的变量questionLabel
已在您的超类中定义。无需再次提及它。这是整个继承点。您的子类继承其超类的变量。
IBOutlet,IBAction,IBDesignable只是标签。在继承树中将它们添加到何处并不重要。在那里,你告诉编译器/ Xcode这是一个特殊的"功能或变量。
因此,如果您的班级有@IBAction func doStuff()
功能,您可以将其覆盖为override func doStuff()
,并仍然可以从IB内部连接到它。如果您想要添加willSet
或didSet
或替换getter / setter函数,则覆盖IBOutlet也是如此。