Я создал собственный класс UITableViewCell
, как показано ниже (программно - для этого раскадровки не используются):
import UIKit
class MainGroupCell: UITableViewCell {
var groupLabel : UILabel {
let label = UILabel()
label.textColor = .black
label.text = "Test Group"
label.font = UIFont(name: "candara", size: 20)
return label
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.contentView.addSubview(groupLabel)
groupLabel.snp.makeConstraints({make in
make.center.equalTo(self.contentView)
})
}
required init?(coder aDecoder: NSCoder){
fatalError("init(coder:) has not been implemented")
}
}
И по какой-то причине я получаю сообщение об ошибке contentView
и groupLabel
не находятся в одной иерархии представлений, но они есть - я добавил groupLabel
в качестве подпредставления к contentView
, как вы можете видеть. Есть ли какая-либо причина для появления этой ошибки? Я сделал это с помощью обычного API Atuolayout вместо SnapKit, и не повезло. Чувствую, что это может быть маленькой ошибкой, которую я пропускаю. Я также попытался использовать ограничение equalToSuperview
, а не то, что я показал выше, но, как и ожидалось, оно также выдает ту же ошибку - суперпредставление groupLabel
возвращает nil
.
Ошибка:
Unable to activate constraint with anchors <NSLayoutXAxisAnchor:0x280870b80
"UILabel:0x105e79fa0'Test Group'.centerX"> and <NSLayoutXAxisAnchor:0x280870a00
"UITableViewCellContentView:0x105fa16a0.centerX"> because they have no common ancestor.
Does the constraint or its anchors reference items in different view hierarchies? That's illegal.'