Я пытаюсь создать UITableView
с 3 различными пользовательскими UITableViewCell
. Все они имеют некоторые общие элементы, такие как UILabel
, который называется questionLabel
.Как подклассировать пользовательский UITableViewCell?
У меня есть три типа клеток
OneTextFieldTableViewCell
TwoLabelTableViewCell
ThreeLabelTableViewCell
Я хочу, чтобы эти клетки, чтобы наследовать от FormTableViewCell
, которые разделяют общие элементы пользовательского интерфейса, как в 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 уже определена в вашем суперклассе. Не нужно снова упоминать об этом. В этом весь смысл наследования. Ваши подклассы наследуют переменные своих суперклассов. – user965972
@ user965972 вы должны добавить ответ, вы правы – Paulw11
@ user965972 Это похоже на работу. Если вы добавите ответ, я приму его. Я в основном добавлял его в подклассы, потому что я не понимал, что вы можете подключить IBOutlets к суперклассу :). – Alan