UITableView при изменении ограничения, влияющего на высоту ячейки после удаления, заканчивается сломанными ограничениями

Этот блок кода пытается найти суть проблемы. Если после переопределения ячейки (через configure ) ограничения изменяются так, что высота ячейки изменяется, тогда вы получаете предупреждение о нарушениях (не Unable to simultaneously satisfy constraints …). Однако он отображается правильно.

 import UIKit class ViewController: UIViewController { @IBOutlet var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self tableView.registerClass(Cell.self, forCellReuseIdentifier: "cell") tableView.estimatedRowHeight = 55.0 tableView.rowHeight = UITableViewAutomaticDimension } } extension ViewController: UITableViewDelegate, UITableViewDataSource { func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return array.count } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! Cell cell.configure(array[indexPath.row]) return cell } func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { } } enum Position { case Top case Middle case Bottom } class Cell: UITableViewCell { private var topConstraint: NSLayoutConstraint! private var bottomConstraint: NSLayoutConstraint! private let label = UILabel() private var previous: Position? override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) label.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.5) label.textColor = UIColor.blackColor() label.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(label) label.leadingAnchor.constraintEqualToAnchor(contentView.leadingAnchor, constant: 30).active = true label.trailingAnchor.constraintEqualToAnchor(contentView.trailingAnchor, constant: -30).active = true topConstraint = label.topAnchor.constraintEqualToAnchor(contentView.topAnchor) topConstraint.active = true bottomConstraint = label.bottomAnchor.constraintEqualToAnchor(contentView.bottomAnchor) bottomConstraint.active = true } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func configure(position: Position) { if previous != nil {print("previous \(previous!) new \(position)")} topConstraint.constant = position == .Top ? 30 : 0 bottomConstraint.constant = position == .Bottom ? -30 : 0 label.text = String(position) previous = position } } let array: [Position] = [.Top, .Middle, .Middle, .Middle, .Bottom, .Top, .Middle, .Middle, .Middle, .Middle, .Bottom, .Top, .Middle, .Middle, .Bottom, .Top, .Middle, .Middle, .Middle, .Middle, .Middle, .Middle, .Bottom, .Top, .Middle, .Middle, .Middle, .Bottom, .Top, .Bottom, .Top, .Middle, .Middle, .Middle, .Middle, .Middle, .Middle, .Bottom, .Top, .Middle, .Middle, .Middle, .Bottom, .Top, .Middle, .Middle, .Bottom, .Top, .Middle, .Middle, .Middle, .Middle, .Middle, .Middle, .Bottom, ] 

Сообщение об ошибке …

 2016-04-28 22:56:29.831 test-constraint-change[51059:3776208] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. ( "<NSLayoutConstraint:0x7c117c70 V:|-(30)-[UILabel:0x7c148770'Middle'] (Names: '|':UITableViewCellContentView:0x7c149b70 )>", "<NSLayoutConstraint:0x7c115bd0 UILabel:0x7c148770'Middle'.bottom == UITableViewCellContentView:0x7c149b70.bottom>", "<NSLayoutConstraint:0x7c14a3f0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7c149b70(20.5)]>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x7c115bd0 UILabel:0x7c148770'Middle'.bottom == UITableViewCellContentView:0x7c149b70.bottom> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 

One Solution collect form web for “UITableView при изменении ограничения, влияющего на высоту ячейки после удаления, заканчивается сломанными ограничениями”

Установите приоритеты ваших ограничений на 999. Как сейчас, он будет отображаться правильно.

  • Индексированные табличные представления не отображаются после обновления до MT 4.0
  • Задержка после didSelectRowAtIndexPath
  • UITableView приходит в обход при добавлении UILabel с cornerRadius в каждую ячейку
  • reloadSection приводит к ошибке «попытка удалить раздел 1, но перед обновлением есть только 1 раздел с userInfo»
  • Приложение отклонено из-за загрузки изображения с сервера iOS
  • Фильтр TableView с использованием Query из другого представления
  • Почему NSInteger вместо NSUInteger в «numberOfSectionInTableView:»?
  • Пользовательский UITableViewCell в UISearchDisplayController
  • Ошибка подтверждения в UITableViewController
  • Пользовательская таблица просмотра таблицы не изменяется в зависимости от размера
  • UITableViewCell очень медленно реагирует на выбор
  • Interesting Posts

    музыка фонового устройства прекращается, так как приложение запускает ios

    RxSwift не может распознать метод подписки

    UItable Cell Overflow ios

    Оффлайн и онлайн-события, не получающие Вызов в кордове 3.5.0

    Почему строки размером менее 1.0pts не отображаются правильно на экранах с сеткой сетчатки?

    Экспорт SecKey из iOS в watchOS

    Пользовательская ячейка с тремя кнопками (со значком) в объективе c

    Каков наилучший способ добавить представление под UINavigationBar в iOS7

    Извлечение и преобразование значения NSData из чтения Bluetooth в Swift

    Проверка повторяющихся событий без получения всех событий в хранилище событий в IOS

    Принуждение Core Data для обновления NSManagedObject из предыдущей сохраненной версии, когда обновленная версия уже находится в памяти

    Снимок экрана для симулятора iPhone не соответствует размеру

    Использование RLMArray без инициализации невозможно?

    Проводка JSON как тела запроса POST с использованием AFHTTPClient

    Невозможно зарегистрировать пользовательское событие анализа анализа

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.