我正在尝试使用3个不同的自定义UITableView
创建一个UITableViewCell
。它们都共享一些通用元素,例如称为UILabel
的questionLabel
。
我有三种类型的细胞OneTextFieldTableViewCell
TwoLabelTableViewCell
ThreeLabelTableViewCell
我希望这些单元格从FormTableViewCell
继承,它们共享如上所述的常见UI元素,例如questionLabel
。
码:
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
最佳答案
您的超类中已经定义了变量questionLabel
。无需再次提及。这就是继承的全部要点。您的子类继承其父类的变量。
IBOutlet,IBAction,IBDesignable只是标签。没关系在继承树中的何处添加它们。到达该位置后,您已通知编译器/ Xcode这是“特殊”函数或变量。
因此,如果您的类具有函数@IBAction func doStuff()
,则可以将其重写为override func doStuff()
并仍然从IB内部连接到它。如果要添加willSet
或didSet
或替换getter / setter函数,则与覆盖IBOutlet相同。