Я написал собственный класс TableViewCell, который либо возвращает значение accessibilityLabel
, установленное для него, либо просто возвращает его имя класса как accessibilityLabel
.Хотя одна из двух реализаций ниже не работает, как ожидалось.Я пытаюсь понять, почему ...
возвращает правильно className
class BaseTableViewCell: UITableViewCell {
var _acsLabel: String?
override var accessibilityLabel: String?{
get{
return _acsLabel ?? "\(type(of: self))"
}set (newValue) {
_acsLabel = newValue ?? ""
}
}
}
возвращает неверно имя класса
class BaseTableViewCell: UITableViewCell {
var _acsLabel: String? = "\(type(of: self))"
override var accessibilityLabel: String?{
get{
return _acsLabel
}set (newValue) {
_acsLabel = newValue ?? ""
}
}
}
Обе версии правильно возвращают значение, если я установил accessibilityLabel
, однако, если значение не установлено, значения по умолчанию, которые они возвращают, отличаются.
Например, я подкласс UserNameTableViewCell
от моего BaseTableViewCell
class и не сами установите accessibilityLabel
, тогда:
- Правильная версия возвращает
accessibilityLabel
как UserNameTableViewCell . - Неправильная версия возвращает
accessibilityLabel
, поскольку возвращает "(BaseTableViewCell) -> () -> BaseTableViewCell"
Почему это так?!