Предупреждение о раскадровке Xcode: привязка объектов привязки, отключенных в текущей конфигурации. Отключите это ограничение в текущей конфигурации

Это предупреждение происходит в Xcode 6.1. У кого-нибудь есть идеи, что означает это предупреждение и что с ним будет? Большое спасибо!

Ниже приведен снимок экрана с предупреждениями, открытыми в исходном коде "

enter image description here

Как определить, какое ограничение вызывает предупреждение? Xcode не сообщает вам, какое ограничение является проблемой.

введите описание изображения здесь

Ответ 1

Это предупреждение может быть раздражающим и происходит с Xcode 6.1.1. Основная проблема заключается в том, что вы не можете легко найти ссылку, нажав на предупреждение. Я предполагаю, что это ошибка, и она будет исправлена ​​рано или поздно.

Однако в то же время вы можете использовать это небольшое обходное решение:

Шаг 1: Обнаружение раздражающего предупреждения 😱

Annoying warning

Шаг 2: Вправо/Ctrl-Нажмите на предупреждение, выберите Reveal in Log 😨

enter image description here

Шаг 3: Полюбуйтесь красотой следующего фрагмента журнала:

... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...

Хммм... Что это...?

interesting

Шаг 4: Позвольте бросить это в панель поиска проекта... 😐

search

😮 Да, вы догадались, правильно. Нажмите на нее.

Шаг 5: 😁 OMG! Наслаждайтесь несколькими дополнительными минутами производительности, пока Apple не устранит эту неприятную ошибку. 😎

wheeee


В течение 2016...

  • Если вы не можете получить его с помощью "Reveal in Log", покажите навигатор отчетов. (Это самая правая вкладка в крайнем левом столбце.) Входите в результаты сборки там. Это покажет журнал сборки, включая идентификатор ограничения. вежливость buildsucceeded

введите описание изображения здесь

введите описание изображения здесь

  • Обратите внимание, что для Xcode 5/2016, досадно, вам нужно выйти и перезапустить Xcode, чтобы в некоторых случаях удалить это предупреждение.

  • Обратите внимание, что сбивчиво, одна и та же ошибка может быть вызвана несвязанной проблемой (это, кажется, ошибка Apple или плохое использование языка ошибок): если у вас есть элементы IBInspectable и произойдет с переименуйте их в свои файлы Swift. Xcode не удаляет старое имя UserDefinedRuntimeAttributes для вас. Просто нажмите "Identity Inspector" (элемент 3 на правой панели) и удалите элементы dud.

В течение 2017...

  • Еще одна общая, и даже более простая причина проблемы. Если вы столкнулись с un-Install элементом: с момента написания очень просто Xcode не знает, чтобы автоматически также удалять любые ограничения, которые приводят к этому элементу. Достаточно просто взглянуть на любые не установленные элементы и на все его ограничения просто пометить их не установленными. (Или просто, возможно, просто временно удалите не установленный элемент в целом, чтобы узнать, есть ли эта проблема.)

Ответ 2

Это сообщение запускается, когда вы дезактивировали представление в своем раскадровке, но не дезактивировали ограничения, основанные на этом представлении.

Например, вы дезактивировали кнопку, но у вас все еще есть некоторые ограничения, связанные с этой кнопкой. Это может быть внутреннее ограничение, например, высота или ширина, или относительное ограничение, такое как расстояние от другого представления.

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

Ответ 3

Это решение работает для меня.

Поскольку я скопировал несколько элементов из проекта, который я разработал в Xcode 5, в Xcode 6, а раскадровка в Xcode 6 поддерживает несколько макетов, для каждого ограничения мне нужно установить его в текущей конфигурации.

Например, я использую "Compact Width | Regular Height", для ограничения, которое мне нужно установить, как показано ниже:

enter image description here

После того, как я проверил и установил все сотни ограничений в моих проектах, очистив и создав, предупреждения окончательно исчезнут.

Ответ 4

Просто хотел добавить свой случай, как эта ошибка произошла для меня: в моем случае я хотел удалить текстовое поле с помощью "Cmd + Backspace". Я сделал это прямо в Tree-View Scene-Builder:

введите описание изображения здесь

Вы можете видеть, что поле "Отсрочка" выделено серым цветом.

Итак, это было легко обнаружено для меня. Вы можете просто просто удалить поле, выбрав:

Изменить-Удалить из меню

Удивительно - это действительно удаляет поле (включая ограничения). Возможно, это помогает кому-то легко найти причину этого раздражающего предупреждения...

Ответ 5

Расширенное пояснение

Ничего плохого в других ответах. Я просто хотел обратить внимание на формулировку в исходном предупреждении и определить пару прецедентов, где это может отображаться в одном рабочем процессе.

constraint-warning

Ограничение привязки элементов, отключенных в текущей конфигурации.

Значение того, что какой-либо элемент (обычно элемент управления или пользовательский вид, который обычно отображается), указанный в одном или нескольких ограничениях, отключен (отключен или установлен флажок "установлен" не установлен). Если, например, вы решите, что хотите переместить элемент управления или просмотр в своем раскадровке вне основного вида (или вы можете иногда видеть, когда делаете что-то интересное в классах размера), тогда вы можете увидеть это предупреждение, если у элемента управления есть ограничения, привязанные к нему,

uninstalled-control

Наряду с рекомендуемым решением:

Отключите это ограничение в текущей конфигурации.

Два подхода к исправлению

Структура документа

Визуально вы можете открыть схему документа в своем раскадровке и искать скрытые ограничения, которые ссылаются на ваш элемент управления/просмотр, сидящий за пределами основного вида (расширьте контур, щелкните ограничение и просмотрите инспектор атрибутов, быстро просмотрите). Затем удалите ограничение из этого контекста (класс размера). Например, в моем случае я просто держу элемент управления до тех пор, пока не решит позже, где его представить, поэтому я решил полностью удалить ограничение на нарушение до более позднего времени. Но в классе размера я просто удалю ограничение из текущего контекста, используя установленный флажок в инспекторе атрибутов.

Log Navigator/Find Tool

Можно также продолжать использовать Log Navigator для поиска контроля проблемы с помощью уникального идентификатора, данного каждому объекту в раскадровке. В журнале это будет непосредственно перед желтым выделенным текстом и обычно принимает форму, как показано в моем примере выше: jvj-mY-DHf

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

log-navigator

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

Ответ 6

Одна из причин, по которой это может произойти, состоит в том, что вы выбрали класс размера, несовместимый с вашими ограничениями (wAny hAny - обычный случай). В этом случае просто выберите другой класс размера в Interface Builder, и вы закончите.

Ответ 7

Для меня это произойдет, если я установил объект для нового объекта (не для просмотра) с параметром "Ограничение на поля", который не отмечен галочкой. Проблема решена с отметкой опции (которая по умолчанию).

Ответ 8

Я думал, что это остается постоянным ограничением из-за другого ответа, однако это было связано с "выходом", который я все еще имел для элемента, который я удалил раньше. Что делать:

  • Выберите свой ViewController
  • Нажмите на значок "outlet" в правом верхнем углу.
  • Просмотрите свои магазины и тщательно удалите все, что вам не нужно.

В худшем случае вы удаляете все свои торговые точки и снова подключаете их снова. Дело решено!

Ответ 9

Как упоминалось и хорошо ориентировано в ответе @BadCat, Я последовал за ступенями и еще один шаг, который я осмелился принять!

Шаги для переноса после последнего шага ответа BadCats:

Шаг 1:

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

Шаг 2

Постройте проект XCode, и он покажет, что количество предупреждений увеличивается. Это потому, что вы удалили ограничение, которое нужно хорошо компилировать. Итак, перейдите на 3-й шаг!

Шаг 3

Повторно добавьте ограничение, которое вы имели в виду (тот, который вы удалили). И снова заново постройте его!

Для меня предупреждения ушли просто, делая это! Думаю, это сработает для некоторых людей!

Причина:

Как я мог понять проблему, вызвавшую это предупреждение, у меня был ярлык, связанный с IBOutlet, но его имя начиналось с большой буквы. Поэтому я переименовал его с помощью простого письма в ViewController и пришел, чтобы изменить его в IB. Я удалил прошлый IBOutlet и пошел, чтобы подключить его к новому переименованному имени свойства и подключенному. Затем я заметил, что появилось новое предупреждение.

Сначала я попробовал следующий answer в этом потоке, но это не помогло!

Ура!

Ответ 10

Мое дело - выбрать ярлык, а затем нажать Ctrl + X, он будет отключен, но я ничего не делаю с ним. Когда я построю, он покажет предупреждение. Решение: удалите ярлык или удалите выбранный элемент управления + X для маркировки.

Ответ 11

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

Ответ 12

Что сработало для меня (и я не знаю, почему) заключается в том, чтобы отключить "Использовать вариации признаков" , затем выполнить чистку, а затем снова включить их. В следующей сборке не было предупреждений.

Чтобы отключить "Использовать вариации признаков" , просто выберите свою раскадровку в Навигаторе проектов, а затем выберите "Инспектор файлов".

введите описание изображения здесь

Затем просто снимите флажок "Использовать вариации признаков" , выполните очистку, нажав Shift-CMD K, а затем снова включите вариации свойств, если вы хотите их использовать.

введите описание изображения здесь

Ответ 13

У меня возникла проблема с представлением стека. Удаление ограничений и их повторное добавление не помогли. Очистка и перестройка не помогли.

Для меня решение состояло в том, чтобы создать совершенно новый объект представления стека.

Затем переместите все элементы из представления старого стека в новое представление стека.

Удаление старого представления стека устраняет проблему.