Ошибка после обновления Xcode 11.5: невозможно активировать ограничение с помощью якорей - PullRequest
0 голосов
/ 28 мая 2020

Я только что обновился до Xcode 11.5, и внезапно мое приложение выдает эту ошибку (перечислено ниже).

Мое приложение имеет TabBar в качестве основы и содержит разные представления для каждого из пяти элементов TabBar. Все представления работают нормально, за исключением третьего, где при нажатии на значок появляется сообщение об ошибке ниже.

Это представление имеет segControl, который изменяет данные в tableView. Я добавил тягу к refre sh и функцию поиска. Также существует UILabel, который появляется, когда данные не могут быть извлечены / нет сценария inte rnet и в противном случае скрыт.

Ошибка

Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with anchors <NSLayoutYAxisAnchor:0x60000064b4c0 "UILabel:0x7fb6dd8b8b80'Day 1'.centerY"> and <NSLayoutYAxisAnchor:0x600000649780 "UIView:0x7fb6dd4b89d0.centerY"> because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies?  That's illegal.'

Я вообще не менял этот фрагмент кода, и он отлично работал до обновления. Вот и я не понимаю, как это исправить.

Я вижу, что могут быть некоторые метки и представления, конфликтующие с их иерархиями ограничений, но я не могу понять, какие из них и как их исправить.

Также в моем коде ничего нет это относится к «Дню 1», и я не добавляю никаких вложенных представлений программно.

Устранение неполадок выполнено на данный момент

  1. Отменены все изменения кода - все та же проблема
  2. Код откат к предыдущее время работы через машину времени - все та же проблема
  3. Откат Xcode до 11.4.x - все та же проблема
  4. Отладил мой код, шаг за шагом - все в порядке
  5. Удалены все метки или дополнительные представления - по-прежнему выдает ошибку
  6. Сбросить ограничения на авто- ограничения - все та же проблема

Текущие ограничения [после отбрасывания всего кода, работает раньше]

 label.top = top - 9 
 bottom = label.bottom + 1 
 label.leading = leading + 8 
 label.centerX = centerX

Это только ограничения, поскольку я добавил представление под tableView, и это представление содержит метку.

[Это автоматические ограничения]

Благодарю за любую помощь. Заранее спасибо.

1 Ответ

0 голосов
/ 28 мая 2020

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

После возврата настраиваемого класса (в раскадровке - tableViewCell ) правильно, это сработало.

Ответ здесь был вдохновением, чтобы опробовать это решение.

...