Ограничения нарушаются, когда программно настроенный UITableViewCell удаляется из UITableView - PullRequest
0 голосов
/ 14 октября 2018

Я использую UITableViewController и загружаю настроенный UITableViewCell.Все элементы в ячейке и ограничения настраиваются программно.TableView выглядит следующим образом

enter image description here Все работает отлично, кроме случаев удаления ячейки.Я настроил tableView для исчезновения клеток при удалении.Тем не менее, ячейка немного дергается, а затем исчезает влево, и я получаю сообщения об ошибках автоматического размещения в консоли: «Невозможно одновременно удовлетворить ограничения» для значений ниже

"<NSLayoutConstraint:0x600002551a40 UIView:0x7fccbd5286f0.height == 100   (active)>",
"<NSLayoutConstraint:0x6000025505a0 V:|-(16)-[UIView:0x7fccbd5286f0]   (active, names: '|':UITableViewCellContentView:0x7fccbd541b10 )>",
"<NSLayoutConstraint:0x600002550730 UIView:0x7fccbd5286f0.bottom == UITableViewCellContentView:0x7fccbd541b10.bottom   (active)>",
"<NSLayoutConstraint:0x6000025605a0 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7fccbd541b10.height == 1.19209e-07   (active)>"

и ниже

"<NSLayoutConstraint:0x6000025505a0 V:|-(16)-[UIView:0x7fccbd5286f0]   (active, names: '|':UITableViewCellContentView:0x7fccbd541b10 )>",
"<NSLayoutConstraint:0x600002550730 UIView:0x7fccbd5286f0.bottom == UITableViewCellContentView:0x7fccbd541b10.bottom   (active)>",
"<NSLayoutConstraint:0x6000025605a0 'UIView-Encapsulated-Layout-Height' UITableViewCellContentView:0x7fccbd541b10.height == 1.19209e-07   (active)>"

и то, что «попытается восстановить, нарушив ограничение» ниже

<NSLayoutConstraint:0x600002551a40 UIView:0x7fccbd5286f0.height == 100   (active)>
<NSLayoutConstraint:0x600002550730 UIView:0x7fccbd5286f0.bottom == UITableViewCellContentView:0x7fccbd541b10.bottom   (active)>

Я разбил вывод консоли на части, потому что не мог вставить все вместепо какой-то причине.

По сути, у меня есть UIView, называемый cellView (белый округленный угол) внутри contentView ячейки.И все остальные элементы, которые вы видите, находятся внутри cellView.Я применил приведенные ниже ограничения между cellView и contentView

cellView.translatesAutoresizingMaskIntoConstraints = false
cellView.heightAnchor.constraint(equalToConstant: 100).isActive = true
cellView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16.0).isActive = true
cellView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true
cellView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16.0).isActive = true
cellView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16.0).isActive = true

Это сработало, когда я попытался деактивировать все ограничения в ячейке и ее подпредставлениях непосредственно перед удалением ячейки.Но, когда новые ячейки используются повторно, у них не было ограничений для активации.

Как мне справиться с этим делом?

1 Ответ

0 голосов
/ 14 октября 2018

Вам нужно понизить приоритет нижнего ограничения

let con = cellView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor)  
con.priority = UILayoutPriority(999)
con.isActive = true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...