В данный момент я кодирую Событие - UIViewController
, в котором три UITableViews
отображают участников, интересующихся и людей, которые не могут прийти.Каждый из них закреплен прямо под ярлыком.Иерархия выглядит следующим образом:
descriptionLabel
|surePeopleLabel
|surePeopleTV
|maybePeopleLabel
|maybePeopleTV
|nopePeopleLabel
|nopePeopleTV
Теперь я хочу отображать только метки и табличные представления, которые имеют отношение к делу.Например, если нет заинтересованных людей, он не должен отображать связанные элементы.
Но это приводит к проблеме: поскольку ограничение nopePeopleLabel
установлено на bottomAnchor изmaybePeopleTV
, который никогда не добавлялся, программа вылетает.
Кто-нибудь знает (плавный) подход для установки привязки к следующему существующему верхнему объекту?Я добавил свой код, хотя в этом нет необходимости ..
if let sureUsers = surePeopleTV.users, !sureUsers.isEmpty {
scrollView.addSubview(surePeopleLabel)
scrollView.addSubview(surePeopleTV)
let sureTVHeight: CGFloat = CGFloat(sureUsers.count) * 60
surePeopleLabel.anchor(top: descLabel.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 20, paddingLeft: padding, paddingBottom: 0, paddingRight: padding, width: 0, height: 0)
surePeopleTV.anchor(top: surePeopleLabel.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 5, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: sureTVHeight)
}
if let maybeUsers = maybePeopleTV.users, !maybeUsers.isEmpty {
scrollView.addSubview(maybePeopleLabel)
scrollView.addSubview(maybePeopleTV)
let maybeTVHeight: CGFloat = CGFloat(maybeUsers.count) * 60
maybePeopleLabel.anchor(top: surePeopleTV.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 20, paddingLeft: padding, paddingBottom: 0, paddingRight: padding, width: 0, height: 0)
maybePeopleTV.anchor(top: maybePeopleLabel.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 5, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: maybeTVHeight)
}
if let nopeUsers = nopePeopleTV.users, !nopeUsers.isEmpty {
scrollView.addSubview(nopePeopleLabel)
scrollView.addSubview(nopePeopleTV)
let nopeTVHeight: CGFloat = CGFloat(nopeUsers.count) * 60
nopePeopleLabel.anchor(top: maybePeopleLabel.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 20, paddingLeft: padding, paddingBottom: 0, paddingRight: padding, width: 0, height: 0)
nopePeopleTV.anchor(top: nopePeopleLabel.bottomAnchor, left: view.leftAnchor, bottom: scrollView.bottomAnchor, right: view.rightAnchor, paddingTop: 5, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: nopeTVHeight)
}